我对Python很陌生,我完全被.join()
弄糊涂了,我读过它是连接字符串的首选方法。
我试过了:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
并得到类似的东西:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
为什么它会像这样工作?不应该自动附加595
吗?
答案 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