每两个逗号截取一次字符串

3

我希望能够在每两个逗号之间分隔我的字符串,但我无法做到,你能帮助我吗? 这是我想要的:['nb1,nb2','nb3,nb4','nb5,nb6']

这是我所做的:

a= 'nb1,nb2,nb3,nb4,nb5,nb6'
compteur=0
for i in a:
    if i==',' :
        compteur+=1
        if compteur%2==0:
           print compteur
           test = a.split(',', compteur%2==0 )
print a
print test

结果:

2
4
nb1,nb2,nb3,nb4,nb5,nb6
['nb1', 'nb2,nb3,nb4,nb5,nb6']

感谢您提前回答。
4个回答

4
你可以使用正则表达式。
In [12]: re.findall(r'([\w]+,[\w]+)', 'nb1,nb2,nb3,nb4,nb5,nb6')
Out[12]: ['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

1
一个快速的解决方法是先用逗号将元素分开,然后再将两个元素重新连接。例如:
sub_result = a.split(',')
result = [','.join(sub_result[i:i+2]) for i in range(0,len(sub_result),2)]

这个意思是:“这将会给出:”。
>>> result
['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

这也适用于元素数量为奇数的情况。例如:
>>> a = 'nb1,nb2,nb3,nb4,nb5,nb6,nb7'
>>> sub_result = a.split(',')
>>> result = [','.join(sub_result[i:i+2]) for i in range(0,len(sub_result),2)]
>>> result
['nb1,nb2', 'nb3,nb4', 'nb5,nb6', 'nb7']

1
你可以使用列表的zip操作来创建成对的元素:
a = 'nb1,nb2,nb3,nb4,nb5,nb6'
parts = a.split(',')
# parts = ['nb1', 'nb2', 'nb3', 'nb4', 'nb5', 'nb6']
pairs = list(zip(parts, parts[1:]))
# pairs = [('nb1', 'nb2'), ('nb2', 'nb3'), ('nb3', 'nb4'), ('nb4', 'nb5'), ('nb5', 'nb6')]

现在,您可以简单地将每个其他对再次组合以获得输出:
list(map(','.join, pairs[::2]))
# ['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

0

首先按逗号拆分字符串,然后应用常见的惯用法将可迭代对象划分为长度为n(在您的情况下为2)的子序列,使用zip函数。

>>> s = 'nb1,nb2,nb3,nb4,nb5,nb6'
>>> [','.join(x) for x in zip(*[iter(s.split(','))]*2)]
['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接