Python 字符串 join

此 Python 方法用于将字符串与可迭代对象连接或串联。此函数接受可迭代对象作为参数。在串联可迭代对象中的字符串时,它会使用给定的分隔符。

本节讨论如何使用此函数将列表、字典、集合等中的字符串连接起来,并提供每个示例及其语法:

separator.join(iterable)

Python 使用空格和分隔符连接字符串

这是一个简单的示例,向您展示字符串 join 函数。在这里,我们声明了一个由字符 a、b 和 c 组成的元组。接下来,我们使用空格作为分隔符,并将元组作为函数的参数。

它组合或串联由空格分隔的元组项。在最后一个语句中,我们在 元组之间使用了逗号作为分隔符。

text = ('a', 'b', 'c')

x = ' '.join(text)
print(x)
 
seq = ','
print(seq.join(text))
a b c
a,b,c

这次我们使用字符串单词元组在 Python 中进行连接。接下来,我们使用 # 作为此方法的 Separator。

text = ('Hi', 'Hello', 'World')
 
seq = '#'
print(seq.join(text))
print()
Hi#Hello#World

如何在 Python 中连接列表项?

我们使用此 join 函数来组合列表项。在这里,我们使用 \n(换行符)作为列表项之间的分隔符。

我建议您参考 Python 中的 列表文章

listText = ['Hi', 'Hello', 'World', 'From', 'Me']
 
seq = '\n'
print(seq.join(listText))
Hi
Hello
World
From
Me

这是应用于列表项的另一个示例。在这里,我们使用了不同的分隔符 ‘’, $$$ 和 -> 来连接列表项。

liVal = ['t', 'u', 't', 'o', 'r', 'i','a', 'l']
print(liVal)
print()
 
seq = ''
print(seq.join(liVal))
print()
 
seq = '$$$'
print(seq.join(liVal))
print()
['t', 'u', 't', 'o', 'r', 'i', 'a', 'l']

tutorial

t$$$u$$$t$$$o$$$r$$$i$$$a$$$l

t->u->t->o->r->i->a->l

如何连接集合元素?

在这里,我们在集合项上使用 Python join 函数。

我建议您参考 集合

setValues = {'Hi', 'Guys', 'How', 'are', 'you'}
print(setValues)
print()
 
seq = ''
print(seq.join(setValues))
print()
 
seq = '###'
str1 = seq.join(setValues)
print(str1)
{'you', 'Guys', 'How', 'Hi', 'are'}

youGuysHowHiare

you###Guys###How###Hi###are

如何连接字典项?

在此 方法 示例中,我们在字典项上使用此 join 函数。参考 字典

Python Join String Example

从上面的屏幕截图可以看出,它合并了字典键。这是可用的默认选项。但是,您可以使用字典函数 values 来合并字典值。

dictItems = {'name': 'Steve', 'Job': 'Developer', 'Country': 'USA'}
 
seq = '$$$'
print(seq.join(dictItems.keys()))
print()
 
seq = '$$$'
print(seq.join(dictItems.values()))
print()
name$$$Job$$$Country

Steve$$$Developer$$$USA

Python 字符串 join 示例

到目前为止,我们只在此方法中使用了可迭代对象(元组、列表、集合和字典)。在这里,我们将 字符串 用作参数。

seq = 'United'
print(seq.join('HELLO'))
print()
 
print(seq.join(['H','E', 'L', 'L', 'O']))
HUnitedEUnitedLUnitedLUnitedO

HUnitedEUnitedLUnitedLUnitedO

从上面的字符串 join 屏幕截图可以看出,print(‘HELLO’) 和 ([‘H’,’E’, ‘L’, ‘L’, ‘O’]) 都返回相同的结果。这是因为,在内部,(‘HELLO’) 会被转换为字符列表。如果您使用 ‘TUTORIAL’ 作为参数,它会打印 TUnitedUUnitedTUnitedO

字符串 join 的另一个示例是理解隐式转换。在这里,我们使用了不同的分隔符来分隔 tutorialgateway。

name = 'tutorialgateway'
print(name)
print()
 
seq = ','
print(seq.join(name))
print()
 
lang = 'Computers'
print(lang)
print()
 
seq = ','
print(seq.join(lang))
tutorialgateway

t,u,t,o,r,i,a,l,g,a,t,e,w,a,y

Computers

C,o,m,p,u,t,e,r,s

Python 连接字符串和整数

到目前为止,我们一直在处理占位文本或句子。在此示例中,我们声明了一个包含字符串和整数的混合列表。接下来,我们使用 $$$ 作为分隔符的此函数来组合列表项。如您所见,它抛出了一个错误:TypeError: sequence item 3: expected str instance, int found

listvalues = ['UK', 'INDIA', 'USA', 1, 'FRANCE']
print(listvalues)
print()
 
seq = '$$$'
print(seq.join(listvalues))
['UK', 'INDIA', 'USA', 1, 'FRANCE']

Traceback (most recent call last):
  File "/Users/suresh/Desktop/simple.py", line 6, in <module>
    print.........
TypeError: sequence item 3: expected str instance, int found

这次,在函数内部,我们使用了 For Loop 来迭代列表中的每个项。接下来,我们使用 str 函数将列表项转换为字符串。

listVal = ['Hi', 20, 'Hello', 40, 'World', 140, 'From', 3.0, 'Now']
print(listVal)
print()
 
seq = ' '
strAftJn = seq.join(str(item) for item in listVal)
print(strAftJn)
print()
 
seq = '@'
strAftJn = seq.join(str(item) for item in listVal)
print(strAftJn)
print()
 
seq = ' *+* '
strAftJn = seq.join(str(item) for item in listVal)
print(strAftJn)
['Hi', 20, 'Hello', 40, 'World', 140, 'From', 3.0, 'Now']

Hi 20 Hello 40 World 140 From 3.0 Now

Hi@20@Hello@40@World@140@From@3.0@Now

Hi *+* 20 *+* Hello *+* 40 *+* World *+* 140 *+* From *+* 3.0 *+* Now

处理混合列表有一个替代方法。在这里,我们使用了 map 函数和字符串 join 来实现相同的结果。参考 map 函数

listTxt = ['Hi', 20, 'Hello', 40, 'World', 140, 'From', 3.0, 'Now']
print(listTxt)
print()
 
sequence = ' '
strAfterJn = sequence.join(map(str, listTxt))
print(strAfterJn)
print()
 
sequence = ', '
strAfterJn = sequence.join(map(str, listTxt))
print(strAfterJn)
print()
 
sequence = ' *#* '
strAfterJn = sequence.join(map(str, listTxt))
print(strAfterJn)
['Hi', 20, 'Hello', 40, 'World', 140, 'From', 3.0, 'Now']

Hi 20 Hello 40 World 140 From 3.0 Now

Hi, 20, Hello, 40, World, 140, From, 3.0, Now

Hi *#* 20 *#* Hello *#* 40 *#* World *#* 140 *#* From *#* 3.0 *#* Now

这是使用 join 方法连接字符串和整数的另一种方法。在这里,我们在 for loop 中使用 format function 来格式化列表项。

listVal = [ 20, 40, 140, 'Learn', 3.0]
print(listVal)
print()
 
seq = ' $ '
afterJn  = seq.join('{0}'.format(item) for item in listVal)
print(afterJn )
print()
 
seq = ' *+* '
afterJn  = seq.join('{0}'.format(item) for item in listVal)
print(afterJn )
[20, 40, 140, 'Learn', 3.0]

20 $ 40 $ 140 $ Learn $ 3.0

20 *+* 40 *+* 140 *+* Learn *+* 3.0