[英]Python/Pandas : how to read a csv in cp1252 with a first row to delete?
請參見答案,它不是在CP1252中編碼的,而是在UTF-16中編碼的。 解決方案代碼是:
import pandas as pd
df = pd.read_csv('my_file.csv', sep='\t', header=1, encoding='utf-16')
也適用於encoding='utf-16-le'
更新:以字節為單位的前三行輸出:
In : import itertools
...: print(list(itertools.islice(open('file_T.csv', 'rb'), 3)))
Out : [b'\xff\xfe"\x00D\x00u\x00 \x00m\x00e\x00r\x00c\x00r\x00e\x00d\x00i\x00 \x000\x005\x00 \x00j\x00u\x00i\x00n\x00 \x002\x000\x001\x009\x00 \x00a\x00u\x00 \x00m\x00e\x00r\x00c\x00r\x00e\x00d\x00i\x00 \x000\x005\x00 \x00j\x00u\x00i\x00n\x00 \x002\x000\x001\x009\x00\n', b'\x00"\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n', b'\x00C\x00o\x00d\x00e\x00 \x00M\x00C\x00U\x00\t\x00I\x00m\x00m\x00a\x00t\x00r\x00i\x00c\x00u\x00l\x00a\x00t\x00i\x00o\x00n\x00\t\x00D\x00a\x00t\x00e\x00\t\x00h\x00e\x00u\x00r\x00e\x00\t\x00V\x00i\x00t\x00e\x00s\x00s\x00e\x00\t\x00L\x00a\x00t\x00i\x00t\x00u\x00d\x00e\x00\t\x00L\x00o\x00n\x00g\x00i\x00t\x00u\x00d\x00e\x00\t\x00T\x00y\x00p\x00e\x00\t\x00E\x00n\x00t\x00r\x00\xe9\x00e\x00\t\x00E\x00t\x00a\x00t\x00\n']
我正在使用原始格式為的csv文件:
問題在於它具有兩個共同引起問題的特征:
第一行不是標題
標頭“Entrée”中有一個重音,如果我不精確編碼cp1252,則會引發UnicodeDecode錯誤
我正在使用Python 3.X和pandas處理這些文件。
但是當我嘗試使用以下代碼閱讀它時:
import pandas as pd
df_T = pd.read_csv('file_T.csv', header=1, sep=';', encoding = 'cp1252')
print(df_T)
為了正確讀取csv,我需要:
我該如何實現?
PS:我知道我可以為此制作VBA程序或其他東西,但我寧願不這樣做。 我有興趣將其包含在我的Python程序中,或者希望確定它是不可能的。
CP1252是普通的舊拉丁語代碼頁 ,它確實支持所有西歐口音。 如果文件是用該代碼頁編寫的,則不會出現亂碼。
您發布的數據的圖像就是圖像。 它沒有說明文件的原始格式。 它是UTF8文件嗎? UTF-16? 絕對不是 CP1252。
UTF8和CP1252均不會產生NAN。 任何單字節代碼頁至少會讀取數字,這意味着文件以多字節編碼保存。
開頭的兩個奇怪字符看起來像字節順序標記。 如果檢查Wikipedia的BOM表條目,您將看到ÿþ
是ÿþ
的BOM表。
嘗試使用utf-16
或utf-16-le
代替cp1252
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.