2016-09-14 225 views
1

我正在處理協調加載文件,並且必須編輯它們,因此我正在使用Python。這些列由pilcrow char 分隔,並且具有作爲quotechar的þPython csv閱讀器多字符quotechar?

問題是quotechar,python中的csv模塊只接受單字符引用(當我編寫csv文件時沒有問題)。

問題:如何在Python中讀取一個CSV文件,其中quotechar是多字符?該CSV FLE的

實施例:

þcol_1þ¶þcol_2þ¶þcol_3þ¶þcol_4þ 
+2

你可以升級到Python 3嗎? 'csv'模塊在2和3中使用'str'類型,而在Python 3中,完全可以識別Unicode,''只是一個代碼點。 –

+2

其實,這個文件使用了什麼* encoding *?只有當文件使用多字節編碼(像UTF-8這樣的變量或像UTF-16這樣的固定變量),Python 2纔會出現問題。如果這是用CP1252等* 8位編碼*完成的,那麼你需要使用的是''\ xb6''和''\ xfe''。 –

+0

Python 3是最乾淨的解決方案。 –

回答

3

索引文件格式是8位編碼,該þ字符在Latin-1的編碼的,真的。這意味着它們分別被編碼爲二進制值0xB6和0xFE。

Python的2 csv模塊接受這些字節相當愉快:

csv.reader(fileobj, delimiter='\xb6', quotechar='\xfe') 

像往常一樣爲csv模塊,確保以二進制方式打開文件離開換行處理的模塊。

在Python 3中,打開newline=''encoding='latin1'在文本模式下的文件,無論是使用上面的\xhh逃逸或實際字符,所以delimiter='¶', quotechar='þ'