python - 正则表达式分割字符串而不考虑引号中的空格

标签 python regex string split quotes

string = 'protein219 Info=Acidfast Name="Mycobacterium   smegmatis" pcp=36789'

我想分割字符串,忽略 ""之间的空格。我正在使用下面的正则表达式来分割行

mystring = [s for s in re.split("( |\\\".*?\\\"|'.*?')", mystring) if s.strip()] 

这给了我结果

['protein219', 'Info=Acidfast', 'Name=' , '"Mycobacterium  smegmatis"', 'pcp=','36789']

预期输出:

['protein219', 'Info=Acidfast', 'Name="Mycobacterium   smegmatis"',' pcp=36789']

请提出您的建议

最佳答案

不要为此使用re.split():

>>> re.findall(r'(?:"[^"]*"|[^\s"])+', string)
['protein219', 'Info=Acidfast', 'Name="Mycobacterium   smegmatis"', 'pcp=36789']

说明:

(?:       # Start of non-capturing group
 "[^"]*"  # Either match a quoted string
|         # or
 [^\s"]   # anything besides spaces or quotes
)+        # End of group, match at least once

关于python - 正则表达式分割字符串而不考虑引号中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680284/

相关文章:

Python:按区间高效查找

Python pymySQL 字符串引号

java - 当部分具有共同字符时如何替换字符串的多个部分?

c# - 如何在 C# 中使用 Substring() 获取字符串的最后五个字符?

Python:字符串计数内存错误

python - Strawpoll.me API 对于我的 Python 程序返回 "400 Bad Request",但可以在终端上运行

python - 我可以在 python 中使用什么方法代替 __file__ ?

python - 匹配由字符串的开头和结尾或非单词字符绑定(bind)的单词的正则表达式

Php 正则表达式,扫描文档以输出行和值

javascript - 将 URL 与 RegExpObject.test() 匹配不起作用