字符串拆分在python中的字符串中的每个其他逗号之后

时间:2012-02-20 18:45:39

标签: python string split

我有一个字符串,其中包含用逗号分隔的每个单词。我想用python中的每个其他逗号分割字符串。我该怎么做?

例如,"xyz,abc,jkl,pqr"应将"xyzabc"作为一个字符串,"jklpqr"作为另一个字符串

5 个答案:

答案 0 :(得分:6)

分割每个逗号可能更容易,然后重新加入对

>>> original = 'a,1,b,2,c,3'
>>> s = original.split(',')
>>> s
['a', '1', 'b', '2', 'c', '3']
>>> alternate = map(''.join, zip(s[::2], s[1::2]))
>>> alternate
['a1', 'b2', 'c3']

这就是你想要的吗?

答案 1 :(得分:2)

拆分,然后重新加入。

所以,分裂:

In [173]: "a,b,c,d".split(',')
Out[173]: ['a', 'b', 'c', 'd']

重新加入:

In [193]: z = iter("a,b,c,d".split(','))
In [194]: [a+b for a,b in zip(*([z]*2))]
Out[194]: ['ab', 'cd']

这是有效的,因为([z]*2)是两个元素的列表,两个元素都是相同的迭代器z。因此,zip从z获取第一个元素,然后是第二个元素来创建每个元组。

这也可以作为一个oneliner,因为在[foo]*n foo中只评估一次,无论它是变量还是更复杂的表达式:

In [195]: [a+b for a,b in zip(*[iter("a,b,c,d".split(','))]*2)]
Out[195]: ['ab', 'cd']

我还删掉了一对括号,因为一元*的优先级低于二元*

感谢@pillmuncher指出可以使用izip_longest进行扩展,以处理具有奇数个元素的列表:

In [214]: from itertools import izip_longest

In [215]: [a+b for a,b in izip_longest(*[iter("a,b,c,d,e".split(','))]*2, fillvalue='')]
Out[215]: ['ab', 'cd', 'e']

(参见:http://docs.python.org/library/itertools.html#itertools.izip_longest

答案 2 :(得分:0)

str = "a,b,c,d".split(",")
print ["".join(str[i:i+2]) for i in range(0, len(str), 2)]

答案 3 :(得分:0)

只需将每个逗号分开,然后将其合并:

splitList = someString.split(",")
joinedString = ','.join([splitList[i - 1] + splitList[i] for i in range(1, len(splitList), 2)]

答案 4 :(得分:-3)

喜欢这个

"a,b,c,d".split(',')