如果我要连接的字符串多于一个字符,则我在使用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次(最后一次除外)
答案 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'