2011-09-07 56 views
3

我在follwing格式的csv文件,解析csv時由於雙引號引起的問題。

"1";"A";"A:"61 B & BA";"C" 

以下是我的代碼來讀取csv文件,

with open(path, 'rb') as f: 
    reader = csv.reader(f, delimiter = ';', quotechar = '"') 
    for row in reader: 
     print row 

的問題是,它打破了5場排,

['1', 'A', 'A:61 B &amp', ' BA', 'C'] 

而我期待我的輸出是,

['1', 'A', 'A:61 B & BA', 'C'] 

當我61乙方在CSV文件之前刪除雙引號,我得到的輸出,

['1', 'A', 'A:61 B & BA', 'C']這是完全正常的,但爲什麼在中場的雙引號引起的問題,即使分隔符和quotechar已被定義?

+0

如果不指定quotechar,會發生什麼情況? – acron

+0

如果不指定quotechar,我得到的結果是,['1','A','A:61 B&','BA'','C'],所以它仍然打破了領域。 –

回答

8

您的csv文件無效。如果引號出現在(引用的)字符串中,則必須將其加倍才能將其轉義。

"1";"A";"A:""61 B & BA";"C" 

會導致

['1', 'A', 'A:"61 B & BA', 'C'] 

的CSV模塊應該如何猜測,劃定項目內的項目和報價報價之間的區別?

3

我懷疑雙引號應該換成& quot ;.

1

您定義了文本中正在使用的分隔符:&符實體具有分號。我建議將您的分隔符更改爲不會顯示在文本中的內容。 (如管道字符或其他)