Python中的默认split
方法将连续空格视为单个分隔符。但是,如果指定分隔符字符串,则连续分隔符不折叠:
>>> 'aaa'.split('a')
['', '', '', '']
折叠连续分隔符最简单的方法是什么?我知道我可以从结果列表中删除空字符串:
>>> result = 'aaa'.split('a')
>>> result
['', '', '', '']
>>> result = [item for item in result if item]
但是有更方便的方法吗?
答案 0 :(得分:16)
这就像你能得到的一样简洁:
string = 'aaa'
result = [s for s in string.split('a') if s]
或者你可以切换到正则表达式:
string = 'aaa'
result = re.split('a+', string)
答案 1 :(得分:10)
答案 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([''])