如果我要连接的字符串超过1个字符,则Python连接无法正常工作

时间:2018-07-22 15:50:17

标签: python

如果我要连接的字符串多于一个字符,则我在使用python join语句时会遇到麻烦

var_string = ', '.join('?' * len(field_split))
print(var_string)

如果field_split是长度为25的列表,则会使我返回此字符串

Var - ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? 

我真正想要的是一个由25个'%s'组成的字符串

%s, %s, %s, %s, %s, .....

我认为我可以将加入更改为

var_string = ', '.join('%s' * len(field_split))

但是那让我回来

%, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s

为什么联接会打乱我的文本并在每个字母后返回逗号?我以为它与特殊字符有关,但是即使我将问号更改为ab,它也会拆分ab。每次重复后,我如何正确地取一个字符串并用逗号重复N次(最后一次除外)

2 个答案:

答案 0 :(得分:0)

使用列表理解,通常比带有列表的*运算符更有意义(通常,当您开始尝试将可变参数列表相乘时,它更安全; [[]] * 3与{ {1}}。

[[] for _ in range(3)]

答案 1 :(得分:0)

在python中,str.join()需要一个可迭代的参数。因此,当您使用“?”时迭代器逐个字符地遍历字符串,因此所有问号都由", "连接。当您使用“%s”时,该字符串的值为"%s"*25,该字符串看起来像%s%s%s.......。因此,逐个字符地进行迭代使输出%s,隔开。迭代的另一个示例是列表(示例如下)

我在下面将field_split定义为25。

>>> field_split = 25
>>> ", ".join("?"*field_split)
'?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?'
>>> ", ".join("%s"*field_split)
'%, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s, %, s'
>>> c = ["a","s","d"]
>>> ", ".join(c)
'a, s, d'