下面介紹 Python 中對包含換行符的字符串的操作。
- 創建包含換行符的字符串,打印輸出(顯示)
- 換行符(CR 和 LF 中的一個或兩個,取決於系統)
\n
(如果),\r\n
(CR+LF) - 三重引號
''
,"""
- 如果你想縮進
- 換行符(CR 和 LF 中的一個或兩個,取決於系統)
- 用換行符連接字符串列表
- 將字符串拆分為換行符和列表:
splitlines()
- 刪除和替換換行代碼
- 打印輸出沒有尾隨換行符
創建包含換行符的字符串,打印輸出
換行符(CR 和 LF 中的一個或兩個,取決於系統)\n(如果),\r\n(CR+LF)
在字符串中插入換行代碼將產生一個新行。
s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3
s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3
換行代碼可以通過以下方式使用。一些編輯器允許您選擇換行代碼。
Macを含むUnix系 | \n (如果) |
Windows系 | \r\n (CR+LF) |
三重引號'',"""
如果使用三引號將字符串括起來,它將是一個字符串,包括換行符。
s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
如果你想縮進
三引號也是字符串中的空格,所以如果你嘗試在代碼中寫得整齊並如下所示縮進,就會插入不必要的空格。
s = '''
Line1
Line2
Line3
'''
print(s)
#
# Line1
# Line2
# Line3
#
通過使用反斜杠忽略代碼中的換行符並使其成為續行,可以寫成如下
用 ” 或 “” 將每一行括起來,並在句子末尾添加一個換行符 ←n。
s = 'Line1\n'\
'Line2\n'\
'Line3'
print(s)
# Line1
# Line2
# Line3
這裡的語法是連接連續的字符串文字。有關詳細信息,請參閱以下文章。
如果要在字符串中添加縮進,只需在每行的字符串中添加一個空格即可。
s = 'Line1\n'\
' Line2\n'\
' Line3'
print(s)
# Line1
# Line2
# Line3
此外,由於可以在括號中自由地進行換行,因此可以使用括號代替反斜杠來編寫以下內容。
s = ('Line1\n'
'Line2\n'
'Line3')
print(s)
# Line1
# Line2
# Line3
s = ('Line1\n'
' Line2\n'
' Line3')
print(s)
# Line1
# Line2
# Line3
如果您只想對齊一行的開頭,只需在三引號的第一行添加一個反斜杠即可。
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3
用換行符連接字符串列表
字符串方法 join() 可用於將字符串列表連接成單個字符串。
當從換行符調用 join() 時,每個字符串元素都與換行符連接。
l = ['Line1', 'Line2', 'Line3']
s_n = '\n'.join(l)
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
s_rn = '\r\n'.join(l)
print(s_rn)
# Line1
# Line2
# Line3
print(repr(s_rn))
# 'Line1\r\nLine2\r\nLine3'
如上例所示,內置函數 repr() 可用於檢查包含換行符的字符串。
將字符串拆分為換行符和列表:splitlines()
字符串方法 splitlines() 可用於將字符串拆分為換行符列表。
splitlines() 將拆分以下任何換行代碼。垂直製表符和分頁符也被拆分。
\n
\r\n
\v
\f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']
刪除和替換換行代碼
通過組合 splitlines() 和 join(),可以從包含換行符的字符串中移除(移除)換行符代碼或用其他字符串替換它們。
s = 'Line1\nLine2\r\nLine3'
print(''.join(s.splitlines()))
# Line1Line2Line3
print(' '.join(s.splitlines()))
# Line1 Line2 Line3
print(','.join(s.splitlines()))
# Line1,Line2,Line3
也可以批量更改換行代碼。即使換行代碼是混合的或未知的,也可以使用 splitlines() 將它們拆分,然後與所需的換行代碼連接。
s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3
print(repr(s_n))
# 'Line1\nLine2\nLine3'
如上所述,splitlines() 將拆分任一換行代碼,因此在使用 splitlines() 和 join() 組合的方法的情況下,無需特別關注換行代碼。
如果換行代碼清晰,也可以用replace()方法替換,替換字符串。
s = 'Line1\nLine2\nLine3'
print(s.replace('\n', ''))
# Line1Line2Line3
print(s.replace('\n', ','))
# Line1,Line2,Line3
但是請注意,如果它包含與預期不同的換行代碼,它將不起作用。
s = 'Line1\nLine2\r\nLine3'
s_error = s.replace('\n', ',')
print(s_error)
# ,Line3Line2
print(repr(s_error))
# 'Line1,Line2\r,Line3'
s_error = s.replace('\r\n', ',')
print(s_error)
# Line1
# Line2,Line3
print(repr(s_error))
# 'Line1\nLine2,Line3'
可以通過重複replace()來替換多個換行碼,但是如果順序錯誤,因為“\r\n”包含“\n”,所以它不會起作用。上述結合 splitlines() 和 join() 的方法更安全,因為無需擔心換行代碼。
s = 'Line1\nLine2\r\nLine3'
print(s.replace('\r\n', ',').replace('\n', ','))
# Line1,Line2,Line3
s_error = s.replace('\n', ',').replace('\r\n', ',')
print(s_error)
# ,Line3Line2
print(repr(s_error))
# 'Line1,Line2\r,Line3'
print(','.join(s.splitlines()))
# Line1,Line2,Line3
使用 rstrip() 方法刪除句子末尾的換行代碼。 rstrip() 是一種去除字符串右端空白字符(包括換行符)的方法。
s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb
print(s.rstrip() + 'bbb')
# aaabbb
打印輸出沒有尾隨換行符
print() 函數默認添加尾隨換行符。因此,如果連續執行 print(),每個輸出結果都會換行顯示。
print('a')
print('b')
print('c')
# a
# b
# c
這是因為 print() 的參數 end 的默認值,它指定要在末尾添加的字符串,是換行符。
如果您不希望末尾有換行符,只需將參數 end 設置為空字符串,輸出將在末尾不帶換行符的情況下輸出。
print('a', end='')
print('b', end='')
print('c', end='')
# abc
參數 end 可以是任何字符串。
print('a', end='-')
print('b', end='-')
print('c')
# a-b-c
但是,如果要連接字符串以進行輸出,連接原始字符串比在 print() 的 end 參數中指定它們更容易。請參閱以下文章。