Python如何拆分:' A,B,"不要拆分,请",D'?

时间:2015-08-13 02:54:49

标签: python regex split

是否有一种用逗号分割行的Pythonic方法,其中一些行包含一个不应该用作分隔符的逗号的短语?例如,"拆分这个?,不!"即使它有一个(非分隔符)逗号,也应该整合在一起。另外,请注意未加引号的' D E F'应该保持在一起。还要注意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)分手:D E F

3 个答案:

答案 0 :(得分:5)

>>> 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']

答案 1 :(得分:2)

用于RegEx解决方案:

你可以捕捉你想要的东西

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

Demo

或拆分不带引号的逗号,如此

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

Demo

答案 2 :(得分:1)

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

你可以这样拆分。参见演示。

https://regex101.com/r/uF4oY4/10