我正在尝试使用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"', '']
虽然这是正确的,但我想摆脱所有空元素。
答案 0 :(得分:8)
这就是你要找的东西:
In [10]: re.findall(r'\w+=".*?"', comp)
Out[10]: ['NAME="Foo"', 'NAME2="FOO BAR"', 'NAME3="BAR BAR"']
听起来re.split()
不适合这项工作。
答案 1 :(得分:2)
您还可以使用列表推导并直接过滤
l = [x for x in re.split('(\s\w+\=\".*?\")', comp) if x != '']
结果看起来像你期望的那样:
print l
['NAME="Foo"', ' NAME2="FOO BAR"', ' NAME3="BAR BAR"']