Python編碼格式導致的csv讀取錯誤


Python編碼格式導致的csv讀取錯誤(pandas.read_csv)

本文記錄python小白我今天遇到的這兩個問題(csv.reader和pandas.csv_read):

  • pandas模塊“CParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2”錯誤
  • csv模塊“line contains NULL byte”錯誤

今天處理數據時疏忽了,而且還偷懶把數據復制到xlsx保存后,直接修改文件后綴成.csv准備用來讀取。之后運行算法要讀數據的時候果然問題來了。

import pandas as pd
path = 'water30.csv'
df=pd.read_csv(path)
  • 1
  • 2
  • 3
  • 4

注:后兩行可寫作df=pd.read_csv('water30.csv')。但由於read_csv本身有好多參數(雖然這里不用), 故寫成path習慣好些。 
這樣會報錯CParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2

我在網上查了好多種解決辦法,由於read_csv的參數很多,所以各有其詞,我這里遇到的應該也只是其中一種,久尋無果。直到我看到這里說看了模塊_csv.c的代碼后,發現文件里不能有 “\0”所以csv文件不可以是unicode編碼的,可以是ANSI。

針對我直接改后綴名的結果是,點擊那個.csv打開時就已經提示我: 
這里寫圖片描述

也就是這里改后綴並沒有把文件格式弄好。所以我選擇“另存為”改選了文件格式為之后,讀取就不會報錯了。

注:有個疑問沒有解決,就是那個我“直接改后綴得到的那個.csv”我用記事本打開查看了一下,編碼就是ANSI啊。那我就不知道為什么報錯了……不過問題倒是暫時解決了。

現在讀取到的格式為是個結構體。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM