2

由于 shlex 这种字符串,我想拆分:

str = 'This doesn''t work' 54e+5 15 .FALSE. 'Another example of "test"'

预期结果:

  • 这不起作用
  • 54e+5
  • 15
  • 。错误的。
  • “测试”的另一个例子

我的主要问题是语法在带引号的字符串中使用双引号 '' 。我无法让 shlex 工作。我尝试了以下设置:

lex = shlex.shlex(str)
lex.whitespace_split = True
lex.quotes = "'"

但即使没有空格字符,它也会在 '' 之间分裂。

谢谢 !!

4

1 回答 1

1

理想情况下,如果您控制文本的生成方式,我会将文件编写为 CSV,并允许 csv 模块正确引用这些项目。然后将其读回列表将是小菜一碟。

但是鉴于文本的原样,如何:

In [4]: import shlex
In [6]: text = """'This doesn''t work' 54e+5 15 .FALSE. 'Another example of "test"'"""
In [34]: [item.replace('\\"\\"',"''") for item in shlex.split(text.replace("''",'\\"\\"'))]
Out[34]: ["This doesn''t work", '54e+5', '15', '.FALSE.', 'Another example of "test"']
于 2013-05-15T10:02:20.070 回答