下面是关于如何在Python中串联和连接字符串str的描述。
- 连接和合并多个字符串:
+
,+=
经营者 - 连接和合并数字和字符串:
+
,+=
经营者,str()
,format()
,F-string - 连接和合并字符串列表(数组)为一个字符串:
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
Numeric and string concatenation\concatenation: +,+=经营者,str(),format(),F-string
不同类型的+操作会导致错误。
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的列表理解法