.join()方法究竟做了什么?

时间:2009-12-09 19:22:05

标签: python list string

我对Python很陌生,我完全被.join()弄糊涂了,我读过它是连接字符串的首选方法。

我试过了:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring().join(strid)

并得到类似的东西:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

为什么它会像这样工作?不应该自动附加595吗?

9 个答案:

答案 0 :(得分:288)

仔细查看输出结果:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

我突出显示原始字符串的“5”,“9”,“5”。 Python join()方法是一个字符串方法,并使用列表来与字符串连接。一个更简单的例子可能有助于解释:

>>> ",".join(["a", "b", "c"])
'a,b,c'

在给定列表的每个元素之间插入“,”。在您的情况下,您的“列表”是字符串表示“595”,它被视为列表[“5”,“9”,“5”]。

您似乎正在寻找+

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

答案 1 :(得分:88)

join将可迭代的东西作为参数。通常它是一个列表。在你的情况下,问题是字符串本身是可迭代的,依次给出每个字符。您的代码分解为:

"wlfgALGbXOahekxSs".join("595")

的行为与此相同:

"wlfgALGbXOahekxSs".join(["5", "9", "5"])

然后产生你的字符串:

"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"

作为迭代的字符串是Python最令人困惑的开始问题之一。

答案 2 :(得分:56)

要附加字符串,只需将其与+符号连接即可。

E.g。

>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world

join使用分隔符连接字符串。分隔符就是你 放在join之前。 E.g。

>>> "-".join([a,b])
'Hello, -world'

Join将字符串列表作为参数。

答案 3 :(得分:7)

join()用于连接所有列表元素。对于连接两个字符串“+”会更有意义:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring() + strid

答案 4 :(得分:4)

要进一步扩展其他人所说的内容,如果您想使用join来简单地连接两个字符串,您可以这样做:

strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring(), strid])

答案 5 :(得分:2)

对于为什么使用+来连接大量字符串https://stackoverflow.com/a/1179996/2670744

的成本有很好的解释
  

Plus运算符是连接两个 Python的完美解决方案   字符串。但是,如果您继续添加两个以上的字符串(n> 25),则您   可能想别的事情。

     

''.join([a, b, c])技巧是一种性能优化。

答案 6 :(得分:0)

提供此输入时,

li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)

Python将此作为输出返回:

'server=mpilgrim;uid=sa;database=master;pwd=secret'

答案 7 :(得分:0)

list = ["my", "name", "is", "kourosh"]   
" ".join(list)

如果这是输入,则可以使用JOIN方法添加单词之间的距离,并将列表转换为字符串。

这是Python输出

'my name is kourosh'

答案 8 :(得分:0)

“”。join 可用于将列表中的字符串复制到变量

>>> myList = list("Hello World")
>>> myString = "".join(myList)
>>> print(myList)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> print(myString)
Hello World