在Python中串联和连接字符串。+运算符,连接函数,等等。

商业

下面是关于如何在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

有一种技术可以用来在代码中的多行上写长字符串。

对于字符串变量来说,这种写入方法是不可能的。

# 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() 在其内部处理中将生成器转换为列表。事实上,从一开始就使用列表理解法会稍微快一点。

关于列表理解和生成器表达式的更多信息,请参见以下文章。

Copied title and URL