下面介紹如何在 Python 中連接和連接字符串 str。
- 連接和合併多個字符串:
+
,+=
操作員 - 連接和組合數字和字符串:
+
,+=
操作員,str()
,format()
,f弦 - 將字符串列表(數組)連接並組合成單個字符串:
join()
- 將數字列表(數組)連接並組合成一個字符串:
join()
,str()
連接和合併多個字符串:+,+=操作員
聯繫:+操作員
++ 運算符可用於連接以下字符串文字和字符串變量
- …’
- “……”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc
s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'
s = s1 + s2 + s3
print(s)
# aaabbbccc
s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd
聯繫:+=操作員
+= 運算符,一個累積賦值運算符,也可以使用。左側的字符串變量與右側的字符串連接,並被賦值和更新。
s1 += s2
print(s1)
# aaabbb
如果要將字符串添加到字符串變量的末尾,只需使用 += 運算符處理字符串變量和任何字符串文字(或另一個字符串變量)。
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
字符串文字的連續串聯
如果您只是並排編寫字符串文字,則字符串文字將被連接起來。
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
兩行之間有空格或反斜杠換行符(被視為延續)是可以接受的。
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
有一種技術可以使用它在代碼的多行上編寫長字符串。
- 相關文章:在 Python 中多行編寫長字符串
這種寫法對於字符串變量是不可能的。
# s = s1 s2 s3
# SyntaxError: invalid syntax
數字和字符串連接/連接:+,+=操作員,str(),format(),f弦
不同類型的 + 操作會導致錯誤。
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
如果要將數值(例如,整數類型 int 或浮點類型 float)與字符串連接,請使用 str() 將數值轉換為字符串類型,然後使用 + 運算符(或 += 運算符)連接它們)。
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
如果要轉換數字的格式,例如補零或小數位,請使用 format() 函數或字符串方法 format()。
s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000
s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000
當然,也可以不格式化直接將變量的值嵌入到字符串中。這比使用 + 運算符更容易編寫。
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
有關如何指定格式的詳細信息,請參閱以下文章。
從 Python 3.6 開始,還引入了一種叫做 f-strings(f-string)的機制,比 format() 寫起來還要簡單。
s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000
s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25
連接和連接字符串列表(數組):join()
字符串方法 join() 可用於將字符串列表連接成單個字符串。
以下是如何編寫它。
'String to be inserted between'.join([List of strings to be concatenated])
使用“要插入的字符串”調用 join() 方法,並將 [要連接的字符串列表] 作為參數傳遞。
如果使用空字符串,[要連接的字符串列表] 將被簡單地連接,如果使用逗號,則字符串將以逗號分隔,如果使用換行符,則每個字符串元素都將換行。
l = ['aaa', 'bbb', 'ccc']
s = ''.join(l)
print(s)
# aaabbbccc
s = ','.join(l)
print(s)
# aaa,bbb,ccc
s = '-'.join(l)
print(s)
# aaa-bbb-ccc
s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc
雖然這裡只給出了一個列表的例子,但其他可迭代對象(如元組)也可以指定為 join() 的參數。
與 join() 相比, split() 用於拆分由特定分隔符分隔的字符串,並將其作為列表獲取。
將數字的列表(數組)連接並組合為字符串:join(),str()
如果 join() 的參數是其元素不是字符串的列表,則會發生錯誤。
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
要將數字列表連接成單個字符串,請將 str() 函數應用於列表推導表示法中的每個元素,以將數字轉換為字符串,然後使用 join() 將它們連接起來。
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
它也可以寫成生成器表達式,它是列表推導的生成器版本。生成器表達式用括號括起來,但如果生成器表達式是函數或方法的唯一參數,則可以省略括號。
s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2
s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2
生成器表達式通常具有比列表推導式使用更少內存的優勢,但使用生成器表達式並沒有特別的優勢,因為 join() 在其內部處理中將生成器轉換為列表。事實上,從一開始就使用列表推導會稍微快一些。
有關列表推導和生成器表達式的更多信息,請參閱以下文章。
- 相關文章:如何使用 Python 列表推導