不久前我问了一个问题(Python 用空格和括号分割未知字符串)在我不得不改变我的思维方式之前效果很好。我还没有掌握正则表达式,所以我需要一些帮助。
如果用户键入:
new test (test1 test2 test3) test "test5 test6"
我希望它看起来像这样的变量的输出:
["new", "test", "test1 test2 test3", "test", "test5 test6"]
换句话说,如果它是一个由空格分隔的单词,则将其与下一个单词分开,如果它在括号中,则将括号中的整个单词组拆分并删除它们。引号也是如此。
我目前使用的代码不符合上述标准(来自上面链接中的答案):
>>>import re
>>>strs = "Hello (Test1 test2) (Hello1 hello2) other_stuff"
>>>[", ".join(x.split()) for x in re.split(r'[()]',strs) if x.strip()]
>>>['Hello', 'Test1, test2', 'Hello1, hello2', 'other_stuff']
这很好用,但是如果你有这个问题,那就有问题了:
strs = "Hello Test (Test1 test2) (Hello1 hello2) other_stuff"
它将 Hello 和 Test 组合为一个拆分而不是两个拆分。
它也不允许同时使用括号和引号拆分。