Skriva långa textsträngar på flera rader i Python

Företag

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 longJag 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 utelämna dem.
Om du har en metodkedja som är längre än en enda teckenrad, snarare än en lång sträng, kan du bryta raden i koden också.

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://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

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 de följande parenteserna har en innebörd.

  • {} = set
  • [] = list

Använd därför runda parenteser () när du skriver en lång sträng på flera rader.
Återigen, med hjälp av det faktum att flera strängar kan sammanfogas till en enda sträng, kan vi skriva följande.

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

Precis som i exemplet med backslash krävs operatören + när variabler ingår.

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Copied title and URL