2012-02-09 103 views
1

我想讀包含類似下面的一個CSV文件中的字段:Python的CSV:包含引號開頭

test,"test,"test,test,test,test 

有一個與引號問題(有六場,但他們作爲五個字段被檢索,因爲「測試」,測試被讀作一個字段)。

我試圖修改條目,如下所示,但我仍然無法檢索引號:

test,""test,""test,test,test,test # quotation marks disappear when the entry is read. 

test,\"test,\"test,test,test,test # backslashes are also retrieved; escaping doesn't seem to work. 

我閱讀CSV文件是這樣的:

info_source = csv.reader(open('.info.csv'), skipinitialspace=True) 

for row in ling_info_source: 
    data = row[1].strip() 
    ... 

回答

3

默認情況下"是Python的csv模塊的quoting character。使用

csv.reader(open('.info.csv'), skipinitialspace=True, quotechar=None) 

禁用此默認設置。你給的例子將導致記錄

['test', '"test', '"test', 'test', 'test', 'test'] 
+0

這種解決方案的問題是,我無法讀取的情況下,如:測試,「測試」測試,「commaToRead,commaToRead」,測試,測試]。對於這種情況,我應該閱讀:[test] [「test」[「test」[「commaToRead,commaToRead」] [test] [test]。可能嗎? – David 2012-02-09 13:28:15

+0

@David:這是不明確的。解析器應該如何知道哪些雙引號是用於引用而哪些不是? – 2012-02-09 13:45:21

+0

我想我應該補充一點,因爲這是我必須測試以澄清:引用字符只適用於它出現在分隔符後面。也就是說,引號字符必須是新分隔部分中的第一個字符,以便使文本中的任何分隔符無效。 – Zhouster 2014-07-30 01:32:16

3

您可以將quoting=csv.QUOTE_NONE參數添加到reader()

+0

在使用'quotechar = None'的時候,我的回答很好,「引用= csv.QUOTE_NONE」似乎是在讀者中禁用引用的文檔化方式。 – 2012-02-09 11:21:28