使用re.split分割字符串时出现额外空元素

8 投票
2 回答
2773 浏览
提问于 2025-04-17 14:20

我正在尝试在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() 可能不是解决这个问题的合适工具。

撰写回答