我正在使用Python。对于以下文本,
foo boo " " cat
我想按空格分割,但" "
应该是一个标记。
['foo', 'boo', '" "', 'cat']
这就是我想要的,但不容易做到。我的愚蠢方法是用非间隔符号替换" "
......但是,我相信只使用RE是可行的。
答案 0 :(得分:3)
尝试shlex:
In [2]: import shlex
In [3]: string = 'foo boo " " cat'
In [4]: shlex.shlex(string)
Out[4]: <shlex.shlex at 0x7f3937aa7bd0>
In [5]: list(shlex.shlex(string))
Out[5]: ['foo', 'boo', '" "', 'cat']
答案 1 :(得分:2)
这在我的控制台中适用:
import re
txt = 'words words words " " words " words"'
split = re.split(' ^((?!" ").)*$', txt) #split on space not contained in double quotes
答案 2 :(得分:1)
一种不同的方法。
>>> import re
...
>>> s = 'foo boo " " cat foo " " foo'
>>> parts = re.findall(r'(?:"[^"]*"|\S+)', s)
['foo', 'boo', '" "', 'cat', 'foo', '" "', 'foo']