16

Python を使用して、次の文字列を分割したいと思います。

a=foo, b=bar, c="foo, bar", d=false, e="false"

これにより、次のリストが表示されます。

['a=foo', 'b=bar', 'c="foo, bar"', 'd=false', 'e="false'"']

posix-mode で shlex を使用し、", " で分割すると、 の引数cが正しく処理されます。ただし、引用符は削除されます。たとえば、falseは と同じではないため、それらが必要です。"false"

これまでの私のコード:

import shlex

mystring = 'a=foo, b=bar, c="foo, bar", d=false, e="false"'

splitter = shlex.shlex(mystring, posix=True)
splitter.whitespace += ','
splitter.whitespace_split = True
print list(splitter) # ['a=foo', 'b=bar', 'c=foo, bar', 'd=false', 'e=false']
4

2 に答える 2

0

正規表現はこれを簡単に解決できます。

import re

mystring = 'a=foo, b=bar, c="foo, bar", d=false, e="false"'

splitString = re.split(',?\s(?=\w+=)',mystring)

ここでの正規表現パターンは、空白の後に単語文字が続き、次に等号を探します。これにより、必要に応じて文字列が分割され、引用符が保持されます。

于 2013-05-23T09:57:46.003 に答える