網站首頁 編程語言 正文
python編碼格式導致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)
注:后兩行可寫作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啊。那我就不知道為什么報錯了……不過問題倒是暫時解決了。
現在讀取到的格式為
是個結構體。
另外,對于:csv模塊“line contains NULL byte”錯誤。和上面出現問題原因和解決方案是一樣的,比如
import csv
csvfile=file('water30.csv','rb')
reader = csv.reader(csvfile)
for line in reader:
print line
csvfile.close()
報錯:Error: line contains NULL byte
修正后,讀入的數據格式為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')
原文鏈接:https://blog.csdn.net/thither_shore/article/details/52338324
相關推薦
- 2022-10-01 詳解React?Fiber架構原理_React
- 2022-10-17 Kotlin編程條件控制示例詳解_Android
- 2022-11-23 Shell執行腳本并輸出日志文件的方法_linux shell
- 2023-03-15 React受控組件與非受控組件實例分析講解_React
- 2022-11-22 Android本地存儲方法淺析介紹_Android
- 2023-10-24 Spring中的@Autowired和@Resource區別
- 2022-12-04 Android嵌套線性布局玩法坑解決方法_Android
- 2022-03-19 Android使用DocumentFile讀寫外置存儲的問題_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支