从正则表达式结果python中删除"

Eit*_*tre 2 python regex

所以我用这个答案非常接近我所需要的.

在我的情况下,我想分割空间,但不是当字符串的一部分在引号内时.

这是我的代码:

data = '"abc dfg" ab da'    
PATTERN = re.compile(r'''((?:[^ "']|"[^"]*"|'[^']*')+)''')
wordList = PATTERN.split(data)[1::2]
Run Code Online (Sandbox Code Playgroud)

给wordList:

['"abc dfg"', 'ab', 'da']
Run Code Online (Sandbox Code Playgroud)

如何更改表达式以使字符串没有额外的引号?

像这样:

['abc dfg', 'ab', 'da']
Run Code Online (Sandbox Code Playgroud)

Mar*_*oun 5

您不必使正则表达式复杂化,只需迭代列表并"从中删除即可.您可以通过多种方式执行此操作,例如使用strip('"').

顺便说一下,你有更好的解决方案:

>>> import shlex
>>> shlex.split('"abc dfg" ab da')
['abc dfg', 'ab', 'da']
Run Code Online (Sandbox Code Playgroud)