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 に答える