python編碼格式導(dǎo)致csv讀取錯(cuò)誤問題(csv.reader, pandas.csv_read)
python編碼格式導(dǎo)致csv讀取錯(cuò)誤
本文記錄python小白我今天遇到的這兩個(gè)問題(csv.reader和pandas.csv_read):
pandas模塊“CParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2”錯(cuò)誤
csv模塊“line contains NULL byte”錯(cuò)誤
今天處理數(shù)據(jù)時(shí)疏忽了,而且還偷懶把數(shù)據(jù)復(fù)制到xlsx保存后,直接修改文件后綴成.csv準(zhǔn)備用來讀取。之后運(yùn)行算法要讀數(shù)據(jù)的時(shí)候果然問題來了。
import pandas as pd path = 'water30.csv' df=pd.read_csv(path)
注:后兩行可寫作df=pd.read_csv('water30.csv')。
但由于read_csv本身有好多參數(shù)(雖然這里不用), 故寫成path習(xí)慣好些。
這樣會(huì)報(bào)錯(cuò)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。
針對(duì)我直接改后綴名的結(jié)果是,點(diǎn)擊那個(gè).csv打開時(shí)就已經(jīng)提示我:
也就是這里改后綴并沒有把文件格式弄好。所以我選擇“另存為”改選了文件格式為
之后,讀取就不會(huì)報(bào)錯(cuò)了。
注:有個(gè)疑問沒有解決,就是那個(gè)我“直接改后綴得到的那個(gè).csv”我用記事本打開查看了一下,編碼就是ANSI啊。那我就不知道為什么報(bào)錯(cuò)了……不過問題倒是暫時(shí)解決了。
現(xiàn)在讀取到的格式為
是個(gè)結(jié)構(gòu)體。
另外,對(duì)于:csv模塊“line contains NULL byte”錯(cuò)誤。和上面出現(xiàn)問題原因和解決方案是一樣的,比如
import csv csvfile=file('water30.csv','rb') reader = csv.reader(csvfile) for line in reader: print line csvfile.close()
報(bào)錯(cuò):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常見錯(cuò)誤及解決
1)第一種錯(cuò)誤
錯(cuò)誤提示:
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)第二種錯(cuò)誤
錯(cuò)誤提示:
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')
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python寫的一個(gè)簡單DNS服務(wù)器實(shí)例
這篇文章主要介紹了Python寫的一個(gè)簡單DNS服務(wù)器實(shí)例,需要的朋友可以參考下2014-06-06opencv 實(shí)現(xiàn)特定顏色線條提取與定位操作
這篇文章主要介紹了opencv 實(shí)現(xiàn)特定顏色線條提取與定位操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06django的settings中設(shè)置中文支持的實(shí)現(xiàn)
這篇文章主要介紹了django的settings中設(shè)置中文支持的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析
這篇文章主要介紹了Python爬蟲圖片懶加載技術(shù) selenium和PhantomJS解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09