如何有效地将一个字符串附加到另一个字符串?有没有更快的替代方案:
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
若要处理列表中的多个字符串,请参见如何将列表中的项连接(联接)到单个字符串。
看我如何把一个变量的值在一个字符串(插值到字符串)?如果某些输入不是字符串,但结果仍然应该是字符串。
如何有效地将一个字符串附加到另一个字符串?有没有更快的替代方案:
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
若要处理列表中的多个字符串,请参见如何将列表中的项连接(联接)到单个字符串。
看我如何把一个变量的值在一个字符串(插值到字符串)?如果某些输入不是字符串,但结果仍然应该是字符串。
当前回答
不要过早地优化。如果你没有理由相信字符串连接会导致速度瓶颈,那么就坚持使用+和+=:
s = 'foo'
s += 'bar'
s += 'baz'
也就是说,如果你的目标是像Java的StringBuilder这样的东西,标准的Python习惯用法是将项添加到列表中,然后使用str.join将它们全部连接到末尾:
l = []
l.append('foo')
l.append('bar')
l.append('baz')
s = ''.join(l)
其他回答
如果您需要执行许多附加操作来构建一个大字符串,您可以使用StringIO或cStringIO。接口就像一个文件。即:你写东西是为了给它附加文本。
如果你只是附加两个字符串,那么只需使用+。
str1 = "Hello"
str2 = "World"
newstr = " ".join((str1, str2))
用一个空格作为分隔符连接str1和str2。你也可以做“”。Join (str1, str2,…)Str.join()接受一个可迭代对象,因此必须将字符串放在列表或元组中。
这和内置方法一样高效。
Python 3.6为我们提供了f字符串,这是一个令人高兴的东西:
var1 = "foo"
var2 = "bar"
var3 = f"{var1}{var2}"
print(var3) # prints foobar
你可以在花括号内做任何事情
print(f"1 + 1 == {1 + 1}") # prints 1 + 1 == 2
不要过早地优化。如果你没有理由相信字符串连接会导致速度瓶颈,那么就坚持使用+和+=:
s = 'foo'
s += 'bar'
s += 'baz'
也就是说,如果你的目标是像Java的StringBuilder这样的东西,标准的Python习惯用法是将项添加到列表中,然后使用str.join将它们全部连接到末尾:
l = []
l.append('foo')
l.append('bar')
l.append('baz')
s = ''.join(l)
a='foo'
b='baaz'
a.__add__(b)
out: 'foobaaz'