我的数据如下
string = ' streptococcus 7120 "File being analysed" rd873 '
我尝试使用n=string.split()
拆分该行,结果如下:
[streptococcus,7120,File,being,analysed,rd873]
我想在“”
中拆分忽略空格的字符串# output expected :
[streptococcus,7120,File being analysed,rd873]
答案 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)]
看,妈,没有正则表达式!