我想載入一個帶熊貓的CSV文件在Jupyter筆記本中,其中包含像ä,ö,ü,ß這樣的字符。Python熊貓載入csv ANSI格式爲UTF-8
當我使用記事本打開CSV文件++這裏有一個例子一行導致在ANSI格式的麻煩:
Empf„nger;Empf„ngerStadt;Empf„ngerStraáe;Empf„ngerHausnr.;Empf„ngerPLZ;Empf„ngerLand
正確的UTF-8的結果爲EMPF「手指應該是:Empfänger
現在當我加載CSV數據在Windows上的Python 3.6大熊貓用下面的代碼:
df_a = pd.read_csv('file.csv',sep=';',encoding='utf-8')
我得到和錯誤消息:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position xy: invalid continuation byte
位置「XY」是一種字符發生導致該錯誤消息
當我使用ANSI格式的加載我的CSV文件它的工作原理,但顯示不正確umlaute的位置。
示例代碼:
df_a = pd.read_csv('afile.csv',sep=';',encoding='ANSI')
Empfänger被表示爲:EMPF「手指
注:我試圖將文件轉換爲UTF-8在記事本++和與熊貓模塊之後加載它,但我仍然得到相同的錯誤。
我在網上搜索了一個解決方案,但提供的解決方案,如「改變格式在記事本++到UTF-8」或「使用encoding ='UTF-8'」或'latin1',它給了我與ANSI相同的結果格式或
import chardet
with open('afile.csv', 'rb') as f:
result = chardet.detect(f.readline())
df_a = pd.read_csv('afile.csv',sep=';',encoding=result['encoding'])
沒有爲我工作。
encoding='cp1252'
拋出以下異常:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 2: character maps to <undefined>
我也試圖替換字符串之後使用x.replace()
方法,但性格ü完全消失裝入大熊貓數據幀
有你嘗試過'encoding ='latin1''? –
是的,Empf「nger變成:Empfnger在顯示的單元格中,我將編輯我最初的問題,我也嘗試過latin1。 – MBUser