Python 使用re.split拆分字符串时的其他空元素
我正在尝试使用re.split在Python中拆分如下所示的字符串:Python 使用re.split拆分字符串时的其他空元素,python,regex,python-2.6,Python,Regex,Python 2.6,我正在尝试使用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="B
#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"', '']
虽然这是正确的,但我想去掉所有的空元素。这就是您想要的:
In [10]: re.findall(r'\w+=".*?"', comp)
Out[10]: ['NAME="Foo"', 'NAME2="FOO BAR"', 'NAME3="BAR BAR"']
?
听起来不像是
re.split()
l = [x for x in re.split('(\s\w+\=\".*?\")', comp) if x != '']
结果与您期望的结果类似:
print l
['NAME="Foo"', ' NAME2="FOO BAR"', ' NAME3="BAR BAR"']
=
不需要转义,regexp中的引号也不需要转义。我无法在Python 2.7中重现您的结果。相反,结果是:['NAME=“Foo”'、'NAME2=“Foo-BAR”、''、'NAME3=“BAR”、'']
。请注意NAME2
前面的额外空格,没有前导空值。我看到了与Martijn python 2.7.1类似的结果,空值是两个拆分之间的内容。使用先行断言在空格上拆分,或者使用findall()
替换。我在电脑上测试它的字符串有一个前导空格。这就是为什么我有一个前导空值。修正了问题中的问题。我会这么说;拆分是从错误的方向处理问题。这是否导致o(n)时间复杂度?如果x!=“”,您可以替换如果x