说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的字符串对象方法 str.join(iterable)
可以用此字符串将可迭代对象中的字符串拼接进来,要连接的可迭代对象中的元素必须是字符串。
以下是一些快速的使用示例:
foo = ['hello', 'world', '!']
' '.join(foo)
# 'hello world !'
a = ['a', 'b', 'c']
''.join(a)
# 'abc'
','.join(a)
# 'a,b,c'
'#'.join(a)
# 'a#b#c'
# 元组
'-'.join(('1','3','5'))
# '1-3-5'
# 字典
'-'.join({'a':1, 'b':2})
# 'a-b'
# 字典的值
'-'.join({'a':'1', 'b':'2'}.values())
# '1-2'
# 集合
'-'.join({'1','3','5'})
# '5-1-3'
# 非字符元素转换
b = [1,2,3]
','.join(str(i) for i in b)
','.join(map(str, b))
# '1,2,3'
# 包含非字符元素
'-'.join(['1','3',5])
# TypeError: sequence item 2:
# expected str instance, int found
join() 方法提供了一种从可迭代对象创建字符串的灵活方法。 它通过字符串分隔符(调用 join() 方法的字符串)连接可迭代对象(例如列表、字符串和元组)的每个元素,并返回连接后的字符串。
join() 的语法为:
str.join(iterable)
逻辑为:
可迭代对象(iterable)有:
__iter__()
或者 __getitem()__
特殊方法的对象详见:Python 可迭代对象。
为什么 join() 是一个字符串方法而不是列表或元组方法?
从 Python 1.6 开始,字符串变得更像其他标准类型,当添加方法时,这些方法提供的功能与始终使用 String 模块的函数时提供的功能相同。这些新方法中的大多数已被广泛接受,但似乎让一些程序员感到不舒服的一种方法是:
", ".join(['1', '2', '4', '8', '16'])
# "1, 2, 4, 8, 16"
反对这种用法有两个常见的论点。
第一条是这样的:“使用字符串文本(String Constant)的方法看起来真的很难看”,答案是也许吧,但是字符串文本只是一个固定值。如果在绑定到字符串的名称上允许使用这些方法,则没有逻辑上的理由使其在文字上不可用。
第二个异议通常是这样的:“我实际上是在告诉序列使用字符串常量将其成员连接在一起”。遗憾的是并非如此。出于某种原因,把 split() 作为一个字符串方法似乎要容易得多,因为在这种情况下,很容易看到:
"1, 2, 4, 8, 16".split(", ")
是对字符串文本的指令,用于返回由给定分隔符分隔的子字符串(或在默认情况下,返回任意空格)。
join() 是字符串方法,因为在使用该方法时,您告诉分隔符字符串去迭代一个字符串序列,并在相邻元素之间插入自身。此方法的参数可以是任何遵循序列规则的对象,包括您自己定义的任何新的类。对于字节和字节数组对象也有类似的方法。
更新时间:Dec. 5, 2022, 10:20 a.m. 标签:python 拼接 字符串