2013-04-21 24 views
0

我有一个线(从CSV),看起来像这样:如何防止用逗号分隔双引号守护的表达式?

line = 'M1,After.Life,Agnieszka Wojtowicz-Vosloo,Agnieszka Wojtowicz-Vosloo,"Drama, Thriller",2009/10/2/,80' 

当我做print line.split(',')我得到:

['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', '"Drama', ' Thriller"', '2009/10/2/', '80'] 

这是不可取的,因为它也分裂“剧情,惊悚”。换句话说,我想要的结果是:

['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', '"Drama Thriller"', '2009/10/2/', '80'] 

任何想法到一个简单的方法?谢谢

回答

7

您改为使用csv module。你有一个CSV格式,该模块知道如何正确处理引用的值。

import csv 

with open(somefilename, 'rb') as inputfile: 
    reader = csv.reader(inputfile) 
    for row in reader: 
     # row is a list of string values found on each line, ready split, 
     # with qouted values preserved. 

您的示例行快速演示:

>>> import csv 
>>> inputfile=['M1,After.Life,Agnieszka Wojtowicz-Vosloo,Agnieszka Wojtowicz-Vosloo,"Drama, Thriller",2009/10/2/,80\n'] 
>>> list(csv.reader(inputfile)) 
[['M1', 'After.Life', 'Agnieszka Wojtowicz-Vosloo', 'Agnieszka Wojtowicz-Vosloo', 'Drama, Thriller', '2009/10/2/', '80']] 

注意,报价已经被删除,但逗号仍然存在的价值的一部分。

+0

谢谢你,正是我需要的!我会尽我所能接受答案;) – Barney 2013-04-21 09:04:19

相关问题