簡體   English   中英

Python / Pandas:如何在cp1252中讀取具有第一行要刪除的csv?

[英]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文件:

屏幕文件_T

問題在於它具有兩個共同引起問題的特征:

  • 第一行不是標題

  • 標頭“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)

我得到以下輸出(與header=0相同): file_T的read_csv錯誤

為了正確讀取csv,我需要:

  • 擺脫口音
  • 並忽略/刪除第一行(無論如何我都不需要)。

我該如何實現?

PS:我知道我可以為此制作VBA程序或其他東西,但我寧願不這樣做。 我有興趣將其包含在我的Python程序中,或者希望確定它是不可能的。

CP1252是普通的舊拉丁語代碼頁 ,它確實支持所有西歐口音。 如果文件是用該代碼頁編寫的,則不會出現亂碼。

您發布的數據的圖像就是圖像。 沒有說明文件的原始格式。 它是UTF8文件嗎? UTF-16? 絕對不是 CP1252。

UTF8和CP1252均不會產生NAN。 任何單字節代碼頁至少會讀取數字,這意味着文件以多字節編碼保存。

開頭的兩個奇怪字符看起來像字節順序標記。 如果檢查Wikipedia的BOM表條目,您將看到ÿþÿþ的BOM表。

嘗試使用utf-16utf-16-le代替cp1252

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM