2

我需要将一系列字符串拆分为由空格表示的 3 个组成部分。这些字符串有时包含子列表,但总是作为字符串的最后一个组成部分。

我以前使用 Shlex 来实现这一目标并取得了巨大的成功,但由于我最近的子列表包含自己的空格,这似乎让 Shlex 失望了,所以我不再得到想要的结果。

是否有替代 Shlex 的方法可以更好地执行任务?

一些例子是:

'BREAKFAST IN ["Rolled Oats","Cornflakes","French Toast"]'

COPIES_FOR_EXTERNAL > "0"

应该变成如下列表:

['BREAKFAST','IN', '["Rolled Oats","Cornflakes","French Toast"]']

['COPIES_FOR_EXTERNAL','>','"0"']
4

1 回答 1

1

由于您知道组件的数量并且子列表始终是您可以str.splitmaxsplit参数一起使用的最后一个元素:

s1 = 'BREAKFAST IN ["Rolled Oats","Cornflakes","French Toast"]'
s2 = 'COPIES_FOR_EXTERNAL > "0"'

print s1.split(None, 2) # ['BREAKFAST', 'IN', '["Rolled Oats","Cornflakes","French Toast"]']
print s2.split(None, 2) # ['COPIES_FOR_EXTERNAL', '>', '"0"']
于 2016-04-29T01:20:52.813 回答