Python - 如何在分割字符串时忽略双引号中的空格?

时间:2014-02-07 16:26:07

标签: python string

我的数据如下

string = ' streptococcus 7120 "File  being  analysed" rd873 '

我尝试使用n=string.split()拆分该行,结果如下:

[streptococcus,7120,File,being,analysed,rd873]

我想在“”

中拆分忽略空格的字符串
# output expected :

[streptococcus,7120,File being analysed,rd873]

2 个答案:

答案 0 :(得分:4)

re.findall与合适的正则表达式一起使用。我不确定你的错误案例是什么样的(如果有奇数引号怎么办?),但是:

filter(None, it.chain(*re.findall(r'"([^"]*?)"|(\S+)', ' streptococcus 7120 "File  being  analysed" rd873 "hello!" hi')))
> ['streptococcus',
   '7120',
   'File  being  analysed',
   'rd873',
   'hello!',
   'hi']

看起来不错。

答案 1 :(得分:3)

您需要shlex.split,它会为您提供所需的行为。

import shlex

string = ' streptococcus 7120 "File  being  analysed" rd873 '
items  = shlex.split(string)

这不会删除字符串中嵌入的额外空格,但您可以使用列表解析来执行此操作:

items  = [" ".join(x.split()) for x in shlex.split(string)]

看,妈,没有正则表达式!