Python拆分连续分隔符

时间:2011-06-25 15:56:54

标签: python string split

Python中的默认split方法将连续空格视为单个分隔符。但是,如果指定分隔符字符串,则连续分隔符折叠:

>>> 'aaa'.split('a')
['', '', '', '']

折叠连续分隔符最简单的方法是什么?我知道我可以从结果列表中删除空字符串:

>>> result = 'aaa'.split('a')
>>> result
['', '', '', '']
>>> result = [item for item in result if item]

但是有更方便的方法吗?

6 个答案:

答案 0 :(得分:16)

这就像你能得到的一样简洁:

string = 'aaa'
result = [s for s in string.split('a') if s]

或者你可以切换到正则表达式:

string = 'aaa'
result = re.split('a+', string)

答案 1 :(得分:10)

您可以使用正则表达式作为分隔符,如:

re.split(pattern, string[, maxsplit=0, flags=0])

来自the docs

答案 2 :(得分:2)

您可以使用正则表达式:

re.split(pattern, string[, maxsplit=0, flags=0])

作为

re.split('a+', 'aaa')

答案 3 :(得分:1)

我认为您的解决方案非常好。这是一个等价的:

filter(bool, 'aaa'.split('a'))

可能不像列表理解那样明显。

答案 4 :(得分:0)

不,没有更方便的方法。要么编写自己的分割函数,要么删除空字符串。

但是你的解决方案似乎非常明确和pythonic。

答案 5 :(得分:0)

虽然它并不完全符合您的要求,但您可以使用set删除所有非唯一令牌:

>>> result
['', '', '']
>>> set(result)
set([''])