2013-04-21 39 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