Om du använder en PEP8-kompatibel kodkontrollant som flake8 i Python får du följande fel när en rad överskrider 80 tecken.E501 line too long
Jag ska visa dig hur du delar upp en lång sträng med mer än 80 tecken, t.ex. en URL, i flera rader kod.
- Ignorera radbrytningar med backslashes (\)
- Linjeavbrott kan omslutas fritt av parenteser.
Modulen textwrap är också användbar om du vill skriva ut och visa långa strängar genom att omsluta eller förkorta dem.
Om antalet tecken i en rad är längre i en metodkedja än i en lång sträng kan raden brytas även i koden.
Ignorera radbrytningar med backslashes (\)
I Python är backslash (\) ett fortsättningstecken, och när det placeras i slutet av en rad ignorerar det efterföljande radbrytningar och antar att raden fortsätter.
n = 1 + 2 \
+ 3
print(n)
# 6
När flera stränglitteraler skrivs efter varandra sammanfogas de till en enda sträng enligt nedan.
s = 'aaa' 'bbb'
print(s)
# aaabbb
Genom att kombinera dessa två metoder kan en lång sträng skrivas med flera rader kod, vilket visas nedan.
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
Observera att endast stränglitteraler (inneslutna i ' eller ””) kan sammanlänkas, och variabler som innehåller strängar kommer att resultera i ett fel.
s_var = 'xxx'
# s = 'aaa' s_var 'bbb'
# SyntaxError: invalid syntax
Om du vill sammanfoga variabler med varandra eller variabler med stränglitteraler använder du operatören +.
s = 'aaa' + s_var + 'bbb'
print(s)
# aaaxxxbbb
Även när de är separerade med ett backslash (\) krävs operatören + för att sammanfoga variabler.
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'\
+ s_var\
+ 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Linjeavbrott kan omslutas fritt av parenteser.
I Python kan du fritt bryta rader inom följande parenteser. Du kan använda den här regeln för att omsluta långa textsträngar i parenteser.
()
{}
[]
Observera att vissa parenteser används på andra sätt, som visas nedan, så använd runda parenteser () för sådan användning.
{}
Uppsättning: Uppsättning[]
: Lista
Genom att återigen använda det faktum att flera strängar kan sammanlänkas till en enda sträng kan vi skriva följande
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
Precis som i exemplet med backslash krävs operatören + när variabler ingår.
s = ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+ s_var
+ 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb