【发布时间】:2013-05-18 14:03:15
【问题描述】:
使用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']
【问题讨论】:
-
引号内可以有(转义)引号吗?
-
是的,它们可以(用反斜杠转义)。
-
我相信这是 stackoverflow.com/a/79985/1540600 的副本,它提供了一个更好的答案。 (使用
shlex.split()。) -
这不是重复的,因为
shlex.split不能指定分隔符。 -
我同意 RNA。如需使用自定义分隔符,请参阅 stackoverflow.com/questions/56791723/…