我是Python的新手,我完全感到困惑,.join()
因为我已经阅读过它是连接字符串的首选方法.
我试过了:
strid = repr(595) print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring().join(strid)
有类似的东西:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
它为什么这样工作?不应该595
只是自动附加?
仔细看看你的输出:
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
join
将可迭代的东西作为参数.通常它是一个列表.在你的情况下,问题是字符串本身是可迭代的,依次给出每个字符.你的代码分解为:
"wlfgALGbXOahekxSs".join("595")
其行为与此相同:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
所以产生你的字符串:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
作为迭代的字符串是Python最令人困惑的开始问题之一.
要附加字符串,只需将其与+
符号连接即可.
例如
>>> a = "Hello, " >>> b = "world" >>> str = a + b >>> print str Hello, world
join
用分隔符连接字符串.分隔符是您放置之前的位置join
.例如
>>> "-".join([a,b]) 'Hello, -world'
Join将字符串列表作为参数.
join()用于连接所有列表元素.对于连接两个字符串"+"会更有意义:
strid = repr(595) print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring() + strid