str.join()方法的输出不一致

时间:2018-12-09 12:42:16

标签: python string

让我们分配两个变量:

>>> a_id = 'c99faf24275d476d84e0c8f0ad953582'
>>> u_id = '59958a11a6ad4d8b39707a70'

右输出:

>>> a_id+u_id
'c99faf24275d476d84e0c8f0ad95358259958a11a6ad4d8b39707a70'

错误的输出:

>>> str.join(a_id,u_id)
'5c99faf24275d476d84e0c8f0ad9535829c99faf24275d476d84e0c8f0ad9535829c99faf24275d476d84e0c8f0ad9535825c99faf24275d476d84e0c8f0ad9535828c99faf24275d476d84e0c8f0ad953582ac99faf24275d476d84e0c8f0ad9535821c99faf24275d476d84e0c8f0ad9535821c99faf24275d476d84e0c8f0ad953582ac99faf24275d476d84e0c8f0ad9535826c99faf24275d476d84e0c8f0ad953582ac99faf24275d476d84e0c8f0ad953582dc99faf24275d476d84e0c8f0ad9535824c99faf24275d476d84e0c8f0ad953582dc99faf24275d476d84e0c8f0ad9535828c99faf24275d476d84e0c8f0ad953582bc99faf24275d476d84e0c8f0ad9535823c99faf24275d476d84e0c8f0ad9535829c99faf24275d476d84e0c8f0ad9535827c99faf24275d476d84e0c8f0ad9535820c99faf24275d476d84e0c8f0ad9535827c99faf24275d476d84e0c8f0ad953582ac99faf24275d476d84e0c8f0ad9535827c99faf24275d476d84e0c8f0ad9535820'

现在考虑这种情况,现在输出正确:

>>> a="asdf"
>>> b="asdfsdfsd"

>>> str.join(a,b)
'aasdfsasdfdasdffasdfsasdfdasdffasdfsasdfd'

在示例中确认所有变量的类型:

>>> type(a)
<class 'str'>

>>> type(a_id)
<class 'str'>

>>> type(u_id)
<class 'str'>

修改

我刚刚意识到输出中的第二种情况也不尽人意。我使用的连接方法错误。

1 个答案:

答案 0 :(得分:5)

str.join(a, b)等效于a.join(b),条件是a是str对象,而b是可迭代的。字符串始终是可迭代的,因为遍历字符串时将遍历字符串中的每个字符。

这基本上是“在a的每个元素之间插入b的副本(作为迭代)”,因此,如果ab都是字符串,则将a的副本插入b中的每对字母中。例如:

>>> str.join(".", "123456")
'1.2.3.4.5.6'

如果只想连接两个字符串,则+就足够了,而不是join

>>> "." + "123456"
'.123456'

如果您确实想要join,请将字符串放在列表中,并使用空字符串作为“定界符”:

>>> str.join('', ['123', '456', '7890'])
'1234567890'
>>> ''.join(['123', '456', '7890'])
'1234567890'