如何避免由前面或尾随空格引起的空字符串?

时间:2014-09-13 00:13:00

标签: python regex split

>>> import re
>>> re.split(r'[ "]+', '  a n" "c ')
['', 'a', 'n', 'c', '']

当有前面或后面的空格时,分割后会有空字符串。 我该如何避免那些空字符串?感谢。

3 个答案:

答案 0 :(得分:4)

空值是分割之间的东西。 re.split()不适合这项工作。

我建议您选择匹配的内容。

>>> re.findall(r'[^ "]+', '  a n" "c ')
['a', 'n', 'c']

如果必须使用拆分,则可以使用列表推导并直接过滤它。

>>> [x for x in re.split(r'[ "]+', '  a n" "c ') if x != '']
['a', 'n', 'c']

答案 1 :(得分:3)

这就是re.split应该做的事情。你要求它在任何空格或引号的运行上拆分字符串;如果它在开始时没有返回一个空字符串,你就无法将这种情况与没有前面空格的情况区分开来。

如果你真正要求的是找到所有非空格或引号字符的运行,那就写下:

>>> re.findall(r'[^ "]+', '  a n" "c ')
['a', 'n', 'c']

答案 2 :(得分:1)

我喜欢abarnert解决方案。

但是,您也可以(也许不是pythonic方式):

myString.strip()

split(或其他)之前。