Cut a string of characters every two commas

I would like to separate my line every comma, but I cannot, you can help me. This is what I want:['nb1,nb2','nb3,nb4','nb5,nb6']

Here's what I did:

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

      

Result:

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

      

Thank you for answering your questions.

+3


source to share


4 answers


A quick fix might be to simply separate the items first with a comma and and then merge the items back into two again . How:

sub_result = a.split(',')
result = [','.join(sub_result[i:i+2]) for i in range(0,len(sub_result),2)]

      

This gives:



>>> result
['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

      

This will also work if the number of items is odd. For example:

>>> 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


source


you can use regex



In [12]: re.findall(r'([\w]+,[\w]+)', 'nb1,nb2,nb3,nb4,nb5,nb6')
Out[12]: ['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

      

+4


source


You use the list zip operation with itself to create pairs:

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')]

      

Now you can just concatenate every other pair for your output:

list(map(','.join, pairs[::2]))
# ['nb1,nb2', 'nb3,nb4', 'nb5,nb6']

      

+1


source


Separate the string with a comma first, and then apply the general idiom to split the translatables into subsequences of length n (where n is 2 in your case) with zip

.

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

      

0


source







All Articles