我对Python很陌生,完全搞不懂.join(),我读过它是连接字符串的首选方法。

我试着:

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

结果是这样的:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

为什么会这样?595不是应该被自动追加吗?


当前回答

要附加一个字符串,只需将它与+号连接。

E.g.

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

Join使用分隔符将字符串连接在一起。分隔符就是你 放置在连接之前。如。

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

Join接受一个字符串列表作为参数。

其他回答

仔细看看你的输出:

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

要附加一个字符串,只需将它与+号连接。

E.g.

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

Join使用分隔符将字符串连接在一起。分隔符就是你 放置在连接之前。如。

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

Join接受一个字符串列表作为参数。

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

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

Join以一个可迭代的东西作为参数。通常是一个列表。在你的例子中,问题是字符串本身是可迭代的,依次给出每个字符。你的代码分解成这样:

"wlfgALGbXOahekxSs".join("595")

它的作用是这样的:

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

然后生成你的字符串:

"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"

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

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

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

这是Python输出

'my name is kourosh'