Escribir longas cadeas de texto en varias liñas en Python

Negocios

Se usas un comprobador de código compatible con PEP8 como flake8 en Python, obterás o seguinte erro cando unha liña supere os 80 caracteres.
E501 line too long

Vou amosarche como dividir unha cadea longa de máis de 80 caracteres, como un URL, en varias liñas de código.

  • Ignorar saltos de liña con barras inclinadas inversas (\)
  • Os saltos de liña pódense encerrar libremente entre parénteses

Ademais, o módulo textwrap é útil se queres sacar e mostrar cadeas longas encaixándoas ou abreviándoas.

Se o número de caracteres nunha liña é máis longo nunha cadea de métodos que nunha cadea longa, a liña tamén se pode romper no código.

Ignorar saltos de liña con barras inclinadas inversas (\)

En Python, a barra invertida (\) é un carácter de continuación e, cando se coloca ao final dunha liña, ignora os saltos de liña posteriores e asume que a liña continúa.

n = 1 + 2 \
    + 3

print(n)
# 6

Ademais, cando se escriben varias cadeas literais en sucesión, concatenanse para formar unha única cadea como se mostra a continuación.

s = 'aaa' 'bbb'

print(s)
# aaabbb

Combinando os dous, pódese escribir unha cadea longa en varias liñas de código, como se mostra a continuación.

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

Teña en conta que só se poden concatenar os literais de cadea (incluídos entre ‘ ou “”) e que as variables que conteñan cadeas provocarán un erro.

s_var = 'xxx'

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

Para concatenar variables entre si ou variables en literais de cadea, use o operador +.

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

Mesmo cando estea separado por unha barra invertida (\), o operador + é necesario para concatenar variables.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

Os saltos de liña pódense encerrar libremente entre parénteses

En Python, pode romper liñas libremente entre os seguintes parénteses. Podes usar esta regra para incluír longas cadeas de texto entre parénteses.

  • ()
  • {}
  • []

Teña en conta que as seguintes parénteses teñen un significado.

  • {} = set
  • [] = list

Por este motivo, use corchetes redondos () ao escribir unha cadea longa en varias liñas.

De novo, usando o feito de que se poden concatenar varias cadeas para formar unha única cadea, podemos escribir o seguinte

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

Como no exemplo coa barra invertida, o operador + é necesario cando se inclúen variables.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb