Scrivere lunghe stringhe di testo su più righe in Python

Attività commerciale

Se usate un controllore di codice conforme a PEP8 come flake8 in Python, otterrete il seguente errore quando una linea supera gli 80 caratteri.
E501 line too long

Vi mostrerò come spezzare una lunga stringa di più di 80 caratteri, come un URL, in più righe di codice.

  • Ignora le interruzioni di riga con backslash (\)
  • Le interruzioni di riga possono essere liberamente racchiuse tra parentesi

Inoltre, il modulo textwrap è utile se volete emettere e visualizzare lunghe stringhe avvolgendole o abbreviandole.

Se il numero di caratteri in una linea è più lungo in una catena di metodi che in una stringa lunga, la linea può essere interrotta anche nel codice.

Ignora le interruzioni di riga con backslash (\)

In Python, il backslash (\) è un carattere di continuazione, e quando è posto alla fine di una linea, ignora le successive interruzioni di linea e assume che la linea stia continuando.

n = 1 + 2 \
    + 3

print(n)
# 6

Inoltre, quando più letterali di stringa sono scritti in successione, sono concatenati per formare una singola stringa come mostrato di seguito.

s = 'aaa' 'bbb'

print(s)
# aaabbb

Combinando le due cose, una lunga stringa può essere scritta in più righe di codice, come mostrato qui sotto.

s = 'https://ja.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://ja.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

Si noti che solo i letterali di stringa (racchiusi in ' o “”) possono essere concatenati, e le variabili che contengono stringhe risulteranno in un errore.

s_var = 'xxx'

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

Per concatenare variabili tra loro o variabili a letterali di stringa, usate l'operatore +.

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

Anche quando sono separati da un backslash (\), l'operatore + è necessario per concatenare le variabili.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Le interruzioni di riga possono essere liberamente racchiuse tra parentesi

In Python, è possibile interrompere liberamente le linee all'interno delle parentesi seguenti. Potete usare questa regola per racchiudere lunghe stringhe di testo tra parentesi.

  • ()
  • {}
  • []

Notate che alcune parentesi sono usate in altri modi, come mostrato qui sotto, quindi usate le parentesi tonde () per questi usi.

  • {}Set: Set
  • []: Lista

Di nuovo, usando il fatto che più stringhe possono essere concatenate insieme per formare una singola stringa, possiamo scrivere quanto segue

s = ('https://ja.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://ja.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

Come nell'esempio con il backslash, l'operatore + è richiesto quando le variabili sono incluse.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb