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/