我有一个字符串,其中包含用逗号分隔的每个单词。我想用python中的每个其他逗号分割字符串。我该怎么做?
例如,"xyz,abc,jkl,pqr"
应将"xyzabc"
作为一个字符串,"jklpqr"
作为另一个字符串
答案 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(',')