python編碼格式導(dǎo)致csv讀取錯誤問題(csv.reader, pandas.csv_read)
python編碼格式導(dǎo)致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”錯誤
今天處理數(shù)據(jù)時疏忽了,而且還偷懶把數(shù)據(jù)復(fù)制到xlsx保存后,直接修改文件后綴成.csv準(zhǔn)備用來讀取。之后運行算法要讀數(shù)據(jù)的時候果然問題來了。
import pandas as pd path = 'water30.csv' df=pd.read_csv(path)
注:后兩行可寫作df=pd.read_csv('water30.csv')。
但由于read_csv本身有好多參數(shù)(雖然這里不用), 故寫成path習(xí)慣好些。
這樣會報錯CParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2
我在網(wǎng)上查了好多種解決辦法,由于read_csv的參數(shù)很多,所以各有其詞,我這里遇到的應(yīng)該也只是其中一種,久尋無果。直到我看到這里說看了模塊_csv.c的代碼后,發(fā)現(xiàn)文件里不能有 “\0”, 所以csv文件不可以是unicode編碼的,可以是ANSI。
針對我直接改后綴名的結(jié)果是,點擊那個.csv打開時就已經(jīng)提示我:
也就是這里改后綴并沒有把文件格式弄好。所以我選擇“另存為”改選了文件格式為
之后,讀取就不會報錯了。
注:有個疑問沒有解決,就是那個我“直接改后綴得到的那個.csv”我用記事本打開查看了一下,編碼就是ANSI啊。那我就不知道為什么報錯了……不過問題倒是暫時解決了。
現(xiàn)在讀取到的格式為
是個結(jié)構(gòu)體。
另外,對于:csv模塊“line contains NULL byte”錯誤。和上面出現(xiàn)問題原因和解決方案是一樣的,比如
import csv csvfile=file('water30.csv','rb') reader = csv.reader(csvfile) for line in reader: print line csvfile.close()
報錯:Error: line contains NULL byte
修正后,讀入的數(shù)據(jù)格式為list,如下
[‘1’, ‘2’, ‘2’, ‘1’, ‘2’]
[‘1’, ‘1’, ‘1’, ‘2’, ‘2’]
[‘1’, ‘2’, ‘1’, ‘1’, ‘1’]
[‘1’, ‘1’, ‘1’, ‘1’, ‘2’]
[‘1’, ‘1’, ‘1’, ‘2’, ‘2’]
[‘1’, ‘1’, ‘1’, ‘2’, ‘2’]
[‘0.697’, ‘0.744’, ‘0.634’, ‘0.403’, ‘0.481’]
[‘0.46’, ‘0.376’, ‘0.264’, ‘0.237’, ‘0.149’]
[‘1’, ‘1’, ‘1’, ‘1’, ‘1’]
pandas讀取csv常見錯誤及解決
1)第一種錯誤
錯誤提示:
pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 121, saw 2
解決方法:
import pandas as pd data = pd.read_csv(inputfile, encoding='utf-8',header=None,sep = '\t')
2)第二種錯誤
錯誤提示:
pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at line 15945
解決方法:
import pandas as pd import csv df = pd.read_csv(csvfile, quoting=csv.QUOTE_NONE, encoding='utf-8')
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
django的settings中設(shè)置中文支持的實現(xiàn)
這篇文章主要介紹了django的settings中設(shè)置中文支持的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析
這篇文章主要介紹了Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09