Hosszú szövegek írása több sorban Pythonban

Üzleti

Ha egy PEP8-kompatibilis kódellenőrzőt, például a flake8-at használja Pythonban, a következő hibát kapja, ha egy sor meghaladja a 80 karaktert.E501 line too longMegmutatom, hogyan lehet egy hosszú, több mint 80 karakteres karakterláncot, például egy URL-t, több kódsorra bontani.

  • A backslashes sortörések figyelmen kívül hagyása (\)
  • A sortöréseket szabadon zárójelbe lehet tenni.

A textwrap modul akkor is hasznos, ha hosszú karakterláncokat akarsz kiadni és megjeleníteni úgy, hogy felgöngyölíted vagy kihagyod őket.
Ha nem egy hosszú karakterláncot, hanem egy sornyi karaktert tartalmazó metódusláncot használunk, akkor a kódban is megszakíthatjuk a sort.

A backslashes sortörések figyelmen kívül hagyása (\)

A Pythonban a backslash (\) egy folytatás karakter, és ha a sor végére kerül, akkor figyelmen kívül hagyja a későbbi sortöréseket, és azt feltételezi, hogy a sor folytatódik.

n = 1 + 2 \
    + 3

print(n)
# 6

Továbbá, ha több karakterlánc literált írunk egymás után, akkor az alábbiakban látható módon egyetlen karakterláncot alkotnak.

s = 'aaa' 'bbb'

print(s)
# aaabbb

A kettő kombinálásával egy hosszú karakterlánc több sornyi kóddal írható meg, ahogy az alábbiakban látható.

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

Ne feledje, hogy csak a karakterláncok (' vagy “” keretbe zárva) kapcsolhatók össze, és a karakterláncokat tartalmazó változók hibát fognak eredményezni.

s_var = 'xxx'

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

A változók egymáshoz vagy a változók string literálokhoz való kapcsolásához használja a + operátort.

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

A változók összekapcsolásához a + operátorra akkor is szükség van, ha a változókat backslash (\) választja el.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

A sortöréseket szabadon zárójelbe lehet tenni.

Pythonban a sorokat a következő zárójeleken belül szabadon megszakíthatjuk. Ezt a szabályt használhatja hosszú szövegsorok zárójelbe zárására.

  • ()
  • {}
  • []

Vegye figyelembe, hogy a következő zárójeleknek jelentése van.

  • {} = set
  • [] = list

Ezért, ha hosszú karakterláncot írunk több sorba, használjunk kerek zárójeleket ().
Ismét felhasználva azt a tényt, hogy több karakterláncot össze lehet fűzni egyetlen karakterláncba, a következőt írhatjuk.

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

Ahogy a backslash példában, a + operátorra akkor van szükség, ha változókat tartalmaz.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb