如果我要连接的字符串超过一个字符,我在使用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次(最后一次除外)
发布于 2018-07-23 00:04:12
使用列表理解,这通常比使用列表的*
运算符更有意义(当您开始尝试乘以可变参数的列表时,通常更安全;[[]] * 3
与[[] for _ in range(3)]
非常不同。
>>> ', '.join(['%s' for _ in range(3)])
'%s, %s, %s'
发布于 2018-07-23 01:00:56
在python中,str.join()需要一个参数,该参数应该是可迭代的。所以当你用"?“迭代器逐个字符地迭代字符串,因此所有问号都由", "
连接。当您使用"%s“时,字符串的计算结果为类似于%s%s%s.......
的字符串"%s"*25
。因此,逐个字符迭代得到的输出是由,
分隔的交替的%
和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'
https://stackoverflow.com/questions/51466775
复制相似问题