4-4如何将多个小字符串拼接成一个大的字符串

原文链接: http://www.cnblogs.com/smulngy/p/8871854.html

1、使用操作符+

>>> s1 = 'abcdefg'
>>> s2 = '12345'
>>> s1 + s2
'abcdefg12345'

此”+”是重载运算符,实际上调用的是str.__add__内置方法。

>>> str.__add__ (s1,s2)
'abcdefg12345'

这种方法当数据量大的时候,会占用较多资源。

如果只是很简单的字符串拼接,可以使用,这样更简捷。

2、使用str.join()

>>> help(str.join)
Help on method_descriptor:

join(...)
    S.join(iterable) -> string
    
    Return a string which is the concatenation of the strings in the
iterable.  The separator between elements is S.
help(str.join)

传入一个可迭代对象,用S字符串对象做为分隔符连接起来。

例:

>>> ';'.join(['abc','123',456,'xyz'])

Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    ';'.join(['abc','123',456,'xyz'])
TypeError: sequence item 2: expected string, int found


>>> ';'.join(['abc','123','456','xyz'])
'abc;123;456;xyz'
>>> ';'.join(['abc','123','456','xyz'])
'abc;123;456;xyz'
>>> ''.join(['abc','123','456','xyz'])
'abc123456xyz'
>>> ' '.join(['abc','123','456','xyz'])
'abc 123 456 xyz'

如上例中要把列表中的非字符串,以字符串的形式拼接时,有两种方法

方法一:列表解析

>>> ''.join([str(x) for x in ['abc','123',456,'xyz']])
'abc123456xyz'

将列表中的每一项通过str(x)转化为字符串。

通过列表解析式的方法会生成一个临时列表,如果这个列表很长,会造成比较大的浪费。不建议使用。

方法二:生成器表达式

>>> (str(x) for x in['abc','123',456,'xyz'] )
<generator object <genexpr> at 0x02C60B70>

如上将列表解析的方框号“[]”转为小括号“()”就变成了生成器对象。生成器对象每次执行时,才生成一个,不像列表解析一次性全部列出,所以比较节省资源。建议使用

>>> ''.join(str(x) for x in ['abc','123',456,'xyz'])
'abc123456xyz'

生成器表达式作为参数可以不写小括号“()”

转载于:https://www.cnblogs.com/smulngy/p/8871854.html

猜你喜欢

转载自blog.csdn.net/weixin_30664539/article/details/94785333