Écriture de longues chaînes de texte sur plusieurs lignes en Python

Affaires

Si vous utilisez un vérificateur de code conforme à la PEP8, tel que flake8 en Python, vous obtiendrez l'erreur suivante lorsqu'une ligne dépasse 80 caractères.E501 line too longJe vais vous montrer comment décomposer une longue chaîne de plus de 80 caractères, telle qu'une URL, en plusieurs lignes de code.

  • Ignorer les sauts de ligne avec les barres obliques inversées (\)
  • Les sauts de ligne peuvent être librement encadrés par des parenthèses.

Le module textwrap est également utile si vous souhaitez éditer et afficher de longues chaînes de caractères en les enveloppant ou en les omettant.
Si vous avez une chaîne de méthodes qui est plus longue qu'une simple ligne de caractères, plutôt qu'une longue chaîne, vous pouvez également rompre la ligne dans le code.

Ignorer les sauts de ligne avec les barres obliques inversées (\)

En Python, la barre oblique inversée (\) est un caractère de continuation, et lorsqu'elle est placée à la fin d'une ligne, elle ignore les sauts de ligne ultérieurs et suppose que la ligne se poursuit.

n = 1 + 2 \
    + 3

print(n)
# 6

De même, lorsque plusieurs chaînes littérales sont écrites successivement, elles sont concaténées pour former une seule chaîne, comme indiqué ci-dessous.

s = 'aaa' 'bbb'

print(s)
# aaabbb

En combinant les deux, une longue chaîne de caractères peut être écrite en plusieurs lignes de code, comme illustré ci-dessous.

s = 'https://wikipedia.org/wiki/'\
    '%E3%83%97%E3%83%AD%E3%82%B0%E3%83'\
    '%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E'

print(s)
# https://wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

Notez que seuls les littéraux de chaînes de caractères (entourés de ' ou “”) peuvent être concaténés, et que les variables contenant des chaînes de caractères entraîneront une erreur.

s_var = 'xxx'

# s = 'aaa' s_var 'bbb'
# SyntaxError: invalid syntax

Pour concaténer des variables entre elles ou des variables à des chaînes de caractères, utilisez l'opérateur +.

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

Même lorsqu'elles sont séparées par une barre oblique inverse (\), l'opérateur + est nécessaire pour concaténer les variables.

s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'\
    + s_var\
    + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Les sauts de ligne peuvent être librement encadrés par des parenthèses.

En Python, vous pouvez librement rompre les lignes à l'intérieur des parenthèses suivantes. Vous pouvez utiliser cette règle pour mettre entre parenthèses de longues chaînes de texte.

  • ()
  • {}
  • []

Notez que les parenthèses suivantes ont une signification.

  • {} = set
  • [] = list

Par conséquent, lorsque vous écrivez une longue chaîne sur plusieurs lignes, utilisez des parenthèses rondes ().
Encore une fois, en utilisant le fait que plusieurs chaînes de caractères peuvent être concaténées ensemble pour former une seule chaîne, nous pouvons écrire ce qui suit.

s = ('https://wikipedia.org/wiki/'
     '%E3%83%97%E3%83%AD%E3%82%B0%E3%83'
     '%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E')

print(s)
# https://wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

Comme dans l'exemple avec la barre oblique inversée, l'opérateur + est requis lorsque des variables sont incluses.

s = ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
     + s_var
     + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb