使用re.split分割字符串时出现额外空元素
我正在尝试在Python中使用re.split来分割一个看起来像这样的字符串:
#NAME="Foo" NAME2="foobar" NAME3="BAR BAR"
comp = "NAME=\"Foo\" NAME2=\"FOO BAR\" NAME3=\"BAR BAR\""
这是我写的分割函数,包括正则表达式的样子:
re.split('(\s\w+\=\".*?\")', comp)
结果看起来是这样的:
['NAME="Foo"', 'NAME2="foobar"', '', 'NAME3="BAR BAR"', '']
虽然这个结果是对的,但我想去掉所有空的元素。
2 个回答
2
你也可以使用列表推导式,直接对它进行过滤。
l = [x for x in re.split('(\s\w+\=\".*?\")', comp) if x != '']
结果看起来和你预期的一样:
print l
['NAME="Foo"', ' NAME2="FOO BAR"', ' NAME3="BAR BAR"']
8
这就是你想要的东西吗:
In [10]: re.findall(r'\w+=".*?"', comp)
Out[10]: ['NAME="Foo"', 'NAME2="FOO BAR"', 'NAME3="BAR BAR"']
?
听起来 re.split()
可能不是解决这个问题的合适工具。