在Python中在多行上写长串文本

商业

如果你在Python中使用一个符合PEP8标准的代码检查器,如flake8,当一行超过80个字符时,你会得到以下错误。E501 line too long我将向你展示如何将一个超过80个字符的长字符串,如URL,分成多行代码。

  • 忽略带反斜线的换行符( )。
  • 换行符可以自由地用圆括号括起来

如果你想通过包裹或省略长字符串来输出和显示长字符串,textwrap模块也很有用。
如果你的方法链长于一行字符,而不是一个长字符串,你也可以在代码中断开这一行。

忽略带反斜线的换行符( )。

在Python中,反斜杠(\)是一个延续字符,当放在一行的末尾时,它忽略了随后的换行,并假定该行是延续的。

n = 1 + 2 \
    + 3

print(n)
# 6

另外,当连续写下多个字符串字面时,它们会被串联起来形成一个字符串,如下图所示。

s = 'aaa' 'bbb'

print(s)
# aaabbb

将两者结合起来,一个长字符串可以用多行代码编写,如下图所示。

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

请注意,只有字符串字头(用'或””括起来)可以被连接,包含字符串的变量会导致错误。

s_var = 'xxx'

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

要将变量相互连接或将变量连接到字符串字面,请使用+运算符。

s = 'aaa' + s_var + 'bbb'

print(s)
# aaaxxxbbb

即使是用反斜杠(\)分隔,也需要+运算符来连接变量。

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

换行符可以自由地用圆括号括起来

在Python中,你可以在下面的括号内自由地断行。你可以用这一规则将长串的文本括在括号中。

  • ()
  • {}
  • []

请注意,下面的括号是有意义的。

  • {} = set
  • [] = list

因此,当在多行上写一个长字符串时,要使用圆括号()。
同样,利用多个字符串可以串联在一起形成一个字符串的事实,我们可以写出以下内容。

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

与反斜杠的例子一样,在包含变量时需要+运算符。

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

print(s)
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Copied title and URL