跳到主要内容

Python 字符串 join() 方法

字符串 join() 方法通过连接一个可迭代对象(列表、字符串、元组)的所有元素,并使用给定的分隔符来返回一个字符串。

示例

text = ['Python', 'is', 'a', 'fun', 'programming', 'language']

# 用空格连接 text 的元素
print(' '.join(text))

# 输出: Python is a fun programming language

String join() 的语法

join() 方法的语法是:

string.join(iterable)

join() 参数

join() 方法接受一个可迭代对象(能够一次返回其成员的对象)作为其参数。

一些可迭代对象的例子有:

  • 原生数据类型 - 列表元组字符串字典集合
  • 文件对象和你通过一个 [__iter__()](/python-programming/iterator) 或 __getitem()__ 方法定义的对象。

注意join() 方法提供了一种灵活的方式来从可迭代对象创建字符串。它通过字符串分隔符(调用 join() 方法的字符串)将可迭代对象的每个元素连接起来,并返回连接后的字符串。

join() 的返回值

join() 方法返回通过给定字符串分隔符连接可迭代对象的元素创建的字符串。

如果可迭代对象包含任何非字符串值,它会引发 TypeError 异常。

示例 1:join() 方法的工作原理

# 列表中的 .join()
numList = ['1', '2', '3', '4']
separator = ', '
print(separator.join(numList))

# 元组中的 .join()
numTuple = ('1', '2', '3', '4')
print(separator.join(numTuple))

s1 = 'abc'
s2 = '123'

# s2 的每个元素由 s1 分隔
# '1'+ 'abc'+ '2'+ 'abc'+ '3'
print('s1.join(s2):', s1.join(s2))

# s1 的每个元素由 s2 分隔
# 'a'+ '123'+ 'b'+ '123'+ 'c'
print('s2.join(s1):', s2.join(s1))

输出

1, 2, 3, 4
1, 2, 3, 4
s1.join(s2): 1abc2abc3
s2.join(s1): a123b123c

示例 2:join() 方法与集合

# 集合中的 .join()
test = {'2', '1', '3'}
s = ', '
print(s.join(test))

test = {'Python', 'Java', 'Ruby'}
s = '->->'
print(s.join(test))

输出

2, 3, 1
Python->->Ruby->->Java

注意:集合是无序的项目集合,所以您可能得到不同的输出(顺序是随机的)。

示例 3:join() 方法与字典

# 字典中的 .join()
test = {'mat': 1, 'that': 2}
s = '->'

# 只连接键
print(s.join(test))

test = {1: 'mat', 2: 'that'}
s = ', '

# 由于键不是字符串,这会导致错误
print(s.join(test))

输出

mat->that
Traceback (most recent call last):
File "...", line 12, in <module>
TypeError: sequence item 0: expected str instance, int found

join() 方法尝试将字典的键(而不是值)与字符串分隔符连接起来。

注意:如果字符串的键不是字符串,它会引发 TypeError 异常。