Python Shlex 用括号拆分
Python Shlex splitting with brackets
我需要将一系列字符串拆分为 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"']
因为您知道组件的数量并且子列表始终是最后一个元素,您可以使用 str.split
和 maxsplit
参数:
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"']
我需要将一系列字符串拆分为 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"']
因为您知道组件的数量并且子列表始终是最后一个元素,您可以使用 str.split
和 maxsplit
参数:
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"']