我有一个字符串,如下所示:
这是[支架测试]"和引用测试"
我正在尝试用Python编写一些东西,用空格分割,同时忽略方括号和引号中的空格.我正在寻找的结果是:
['this','is','支架测试','和报价测试']
这是一个简单的解决方案,适用于您的测试输入:
import re re.findall('\[[^\]]*\]|\"[^\"]*\"|\S+',s)
这将返回任何匹配的代码
一个开括号,后跟零或多个非近括号字符后跟一个紧括号,
双引号后跟零个或多个非引号字符后跟引号,
任何一组非空白字符
这适用于您的示例,但对于您可能遇到的许多真实字符串可能会失败.例如,您没有说出您对不平衡括号或引号的期望,或者您希望单引号或转义字符如何工作.但是,对于简单的情况,上述情况可能已经足够了.
完成布莱恩的帖子并完全匹配答案:
>>> import re >>> txt = 'this is [bracket test] "and quotes test "' >>> [x[1:-1] if x[0] in '["' else x for x in re.findall('\[[^\]]*\]|\"[^\"]*\"|\S+', txt)] ['this', 'is', 'bracket test', 'and quotes test ']
不要误解所使用的整个语法:这不是单行上的几个语句,而是单个功能语句(更多的bug).