【发布时间】:2014-09-13 00:12:59
【问题描述】:
>>> import re
>>> re.split(r'[ "]+', ' a n" "c ')
['', 'a', 'n', 'c', '']
当有前后空格时,分割后会有空字符串。 我怎样才能避免那些空字符串?谢谢。
【问题讨论】:
>>> import re
>>> re.split(r'[ "]+', ' a n" "c ')
['', 'a', 'n', 'c', '']
当有前后空格时,分割后会有空字符串。 我怎样才能避免那些空字符串?谢谢。
【问题讨论】:
空值是拆分之间的东西。 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']
【讨论】:
这就是re.split 应该做的。您要求它在任何空格或引号的运行中拆分字符串;如果它在开始时没有返回空字符串,您将无法区分该情况与前面没有空格的情况。
如果您实际要求的是查找所有非空白或引号字符的运行,只需写下:
>>> re.findall(r'[^ "]+', ' a n" "c ')
['a', 'n', 'c']
【讨论】:
我喜欢 abarnert 解决方案。
但是,您也可以这样做(也许不是 Python 的方式):
myString.strip()
在您的split(或其他)之前。
【讨论】: