首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果我要连接的字符串超过1个字符,则Python连接不起作用

如果我要连接的字符串超过1个字符,则Python连接不起作用
EN

Stack Overflow用户
提问于 2018-07-22 23:50:17
回答 2查看 492关注 0票数 1

如果我要连接的字符串超过一个字符,我在使用python join语句时会遇到问题。

代码语言:javascript
复制
var_string = ', '.join('?' * len(field_split))
print(var_string)

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

代码语言:javascript
复制
Var - ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? 

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

代码语言:javascript
复制
%s, %s, %s, %s, %s, .....

我想我可以把我的连接改为

代码语言:javascript
复制
var_string = ', '.join('%s' * len(field_split))

但这让我回到了

代码语言:javascript
复制
%, 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次(最后一次除外)

EN

回答 2

Stack Overflow用户

发布于 2018-07-23 00:04:12

使用列表理解,这通常比使用列表的*运算符更有意义(当您开始尝试乘以可变参数的列表时,通常更安全;[[]] * 3[[] for _ in range(3)]非常不同。

代码语言:javascript
复制
>>> ', '.join(['%s' for _ in range(3)])
'%s, %s, %s'
票数 0
EN

Stack Overflow用户

发布于 2018-07-23 01:00:56

在python中,str.join()需要一个参数,该参数应该是可迭代的。所以当你用"?“迭代器逐个字符地迭代字符串,因此所有问号都由", "连接。当您使用"%s“时,字符串的计算结果为类似于%s%s%s.......的字符串"%s"*25。因此,逐个字符迭代得到的输出是由,分隔的交替的%s。迭代器的另一个示例是列表(示例如下所示)

下面我将field_split定义为25。

代码语言:javascript
复制
>>> 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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51466775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档