8

我正在尝试使用 re.split 在 Python 中拆分一个看起来像这样的字符串:

#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"', '']

虽然这是正确的,但我想摆脱所有空元素。

4

2 回答 2

8

这是你要找的:

In [10]: re.findall(r'\w+=".*?"', comp)
Out[10]: ['NAME="Foo"', 'NAME2="FOO BAR"', 'NAME3="BAR BAR"']

?

这听起来不像re.split()是适合这项工作的工具。

于 2013-01-31T17:07:37.057 回答
2

您还可以使用列表推导并直接对其进行过滤

l = [x for x in re.split('(\s\w+\=\".*?\")', comp) if x != '']

结果看起来像您期望的那样:

print l
['NAME="Foo"', ' NAME2="FOO BAR"', ' NAME3="BAR BAR"']
于 2013-01-31T17:12:38.483 回答