網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
python編碼格式導(dǎo)致csv讀取錯(cuò)誤問(wèn)題(csv.reader,?pandas.csv_read)_python
作者:ThitherShore ? 更新時(shí)間: 2022-07-03 編程語(yǔ)言python編碼格式導(dǎo)致csv讀取錯(cuò)誤
本文記錄python小白我今天遇到的這兩個(gè)問(wèn)題(csv.reader和pandas.csv_read):
pandas模塊“CParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 2”錯(cuò)誤
csv模塊“l(fā)ine contains NULL byte”錯(cuò)誤
今天處理數(shù)據(jù)時(shí)疏忽了,而且還偷懶把數(shù)據(jù)復(fù)制到xlsx保存后,直接修改文件后綴成.csv準(zhǔn)備用來(lái)讀取。之后運(yùn)行算法要讀數(shù)據(jù)的時(shí)候果然問(wèn)題來(lái)了。
import pandas as pd
path = 'water30.csv'
df=pd.read_csv(path)
注:后兩行可寫(xiě)作df=pd.read_csv('water30.csv')。
但由于read_csv本身有好多參數(shù)(雖然這里不用), 故寫(xiě)成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)該也只是其中一種,久尋無(wú)果。直到我看到這里說(shuō)看了模塊_csv.c的代碼后,發(fā)現(xiàn)文件里不能有 “\0”, 所以csv文件不可以是unicode編碼的,可以是ANSI。
針對(duì)我直接改后綴名的結(jié)果是,點(diǎn)擊那個(gè).csv打開(kāi)時(shí)就已經(jīng)提示我:
也就是這里改后綴并沒(méi)有把文件格式弄好。所以我選擇“另存為”改選了文件格式為
之后,讀取就不會(huì)報(bào)錯(cuò)了。
注:有個(gè)疑問(wèn)沒(méi)有解決,就是那個(gè)我“直接改后綴得到的那個(gè).csv”我用記事本打開(kāi)查看了一下,編碼就是ANSI啊。那我就不知道為什么報(bào)錯(cuò)了……不過(guò)問(wèn)題倒是暫時(shí)解決了。
現(xiàn)在讀取到的格式為
是個(gè)結(jié)構(gòu)體。
另外,對(duì)于:csv模塊“l(fā)ine contains NULL byte”錯(cuò)誤。和上面出現(xiàn)問(wè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常見(jiàn)錯(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')
原文鏈接:https://blog.csdn.net/thither_shore/article/details/52338324
相關(guān)推薦
- 2021-12-15 Android中Intent組件的入門(mén)學(xué)習(xí)心得_Android
- 2022-07-10 springboot 將logback日志根據(jù)不同類(lèi)輸入到不同路徑下
- 2024-03-21 解決SpringBoot項(xiàng)目中的報(bào)錯(cuò):Could not autowire,no beans of
- 2022-12-04 Nginx?禁止直接訪問(wèn)目錄或文件的操作方法_nginx
- 2022-05-11 C#?中使用Stopwatch計(jì)時(shí)器實(shí)現(xiàn)暫停計(jì)時(shí)繼續(xù)計(jì)時(shí)功能_C#教程
- 2022-06-09 ASP.NET?Core中的Configuration配置二_基礎(chǔ)應(yīng)用
- 2022-11-03 tomcat?集群監(jiān)控與彈性伸縮詳解_Tomcat
- 2022-05-20 C++實(shí)現(xiàn)商店倉(cāng)庫(kù)管理系統(tǒng)_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支