Python如何拆分:';A、 “B”是;Don';请不要分开;,D';?

Python如何拆分:';A、 “B”是;Don';请不要分开;,D';?,python,regex,split,Python,Regex,Split,有没有一种Pythonic方法可以通过逗号分割行,其中某些行的短语包含不应用作分隔符的逗号?例如,“Split this?,No!”应该保持在一块,即使它有一个(非分隔符)逗号。另外,请注意未加引号的'def',它应该放在一起。还要注意F和G之间的空字段 这: 'A,B,"Split this?, No!",D E F,,G' 当分割应产生: ['A', 'B', 'Split this? No!', 'D E F', '', 'G'] shlex.split(l

有没有一种Pythonic方法可以通过逗号分割行,其中某些行的短语包含不应用作分隔符的逗号?例如,“Split this?,No!”应该保持在一块,即使它有一个(非分隔符)逗号。另外,请注意未加引号的'def',它应该放在一起。还要注意F和G之间的空字段

这:

    'A,B,"Split this?, No!",D E F,,G'    
当分割应产生:

    ['A', 'B', 'Split this? No!', 'D E F', '', 'G']  
shlex.split(line)
没有这样做

re.findall(r'(\w+|“*?”),a)
分解:def

对于正则表达式解决方案:

>>> import csv
>>> rows = csv.reader(['A,B,"Split this?, No!",D E F,G'])
>>> rows.next()
['A', 'B', 'Split this?, No!', 'D E F', 'G']
你可以这样捕捉你想要的东西

(".*?"|[^,]+)

或者像这样用不带引号的逗号分开

,(?=(?:(?:[^"]*"){2})*[^"]*$)

您可以按此拆分。请参阅演示


你的意思是除了使用
csv
?这样一个经典的。。。
,(?=(?:[^"]*"[^"]*")*[^"]*$)