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 longVi 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

Il modulo textwrap è anche utile se volete emettere e visualizzare lunghe stringhe avvolgendole o omettendole.
Se avete una catena di metodi che è più lunga di una singola linea di caratteri, piuttosto che una lunga stringa, potete interrompere la linea 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://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

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, potete interrompere liberamente le linee all'interno delle parentesi seguenti. Potete usare questa regola per racchiudere lunghe stringhe di testo tra parentesi.

  • ()
  • {}
  • []

Notate che le parentesi che seguono hanno un significato.

  • {} = set
  • [] = list

Pertanto, quando si scrive una lunga stringa su più righe, si usano le parentesi tonde ().
Di nuovo, usando il fatto che più stringhe possono essere concatenate insieme per formare una singola stringa, possiamo scrivere quanto segue.

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

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

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb