4-4如何将多个小字符串拼接成一个大的字符串
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.
传入一个可迭代对象,用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'
生成器表达式作为参数可以不写小括号“()”
posted on 2018-04-18 09:06 石中玉smulngy 阅读(377) 评论(0) 编辑 收藏 举报