Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python str.join()方法的输出不一致_Python_String - Fatal编程技术网

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

Python str.join()方法的输出不一致,python,string,Python,String,让我们分配两个变量: >>> a_id = 'c99faf24275d476d84e0c8f0ad953582' >>> u_id = '59958a11a6ad4d8b39707a70' 右输出: >>> a_id+u_id 'c99faf24275d476d84e0c8f0ad95358259958a11a6ad4d8b39707a70' 错误输出: >>> str.join(a_id,u_id) '5c99faf2

让我们分配两个变量:

>>> 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'>
>类型(a)
>>>类型(a_id)
>>>类型(u\u id)
编辑

我刚刚意识到输出中的第二种情况也不是我所期望的。我以错误的方式使用了join方法。

str.join(a,b)
等同于
a.join(b)
,前提是
a
是str对象而
b
是iterable。字符串始终是可编辑的,因为在对字符串进行迭代时,您将遍历其中的每个字符

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

>>> str.join(".", "123456")
'1.2.3.4.5.6'
如果只想连接两个字符串,
+
就足够了,而不是
join

>>> "." + "123456"
'.123456'
如果您确实想要加入,请将字符串放入列表中,并使用空字符串作为“分隔符”:


我很困惑。你的问题是什么?
str.join()
是一个未绑定的方法。您要求Python将
user\u id
的各个字符与
app\u id
一起作为连接字符串连接起来。您通常使用
“连接字符串”。连接(iterable\u of_string)
因此
str.join(a,b)
a.join(b)
相同,其中
b
是一个iterable。字符串是可编辑的,产生每个单独的字符,因此您得到
b[0]+a+b[1]+a+b[2]+a+…+a+b[len(b)-1]
@iBug:是的,我知道。我特意使用了
len(b)-1
,以回送表示可变大小序列串联的公共符号。我的例子不是Python代码,而是数学符号。
>>> str.join('', ['123', '456', '7890'])
'1234567890'
>>> ''.join(['123', '456', '7890'])
'1234567890'