在 Python 中的多行上編寫長文本字符串

商業

如果在 Python 中使用 flake8 等 PEP8 兼容的代碼檢查器,當一行超過 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