首页 > 编程语言 >python -- excel文件被重命名修改后缀为.csv后,使用pandas来读取时,仍会被识别为一个excel文件

python -- excel文件被重命名修改后缀为.csv后,使用pandas来读取时,仍会被识别为一个excel文件

时间:2023-05-14 17:35:22浏览次数:46  
标签:文件 python excel read parsers ._ libs data pandas

 

新建数据文件如c_data.xlsx(后缀为.xlsx),右键重命名,直接将文件后缀名一并修改,修改为“c_data.csv”

读取文件里的数据

data = pd.read_csv('E:/python_workspace/data_space/c_data.csv')

发现报错信息如下:

Traceback (most recent call last):
  File "E:/python_workspace/Demo/pandas_pratices.py", line 3, in <module>
    data = pd.read_csv('E:/python_workspace/data_space/c_data.csv')
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 688, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 460, in _read
    data = parser.read(nrows)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 1198, in read
    ret = self._engine.read(nrows)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 2157, in read
    data = self._reader.read(nrows)
  File "pandas\_libs\parsers.pyx", line 847, in pandas._libs.parsers.TextReader.read
  File "pandas\_libs\parsers.pyx", line 862, in pandas._libs.parsers.TextReader._read_low_memory
  File "pandas\_libs\parsers.pyx", line 918, in pandas._libs.parsers.TextReader._read_rows
  File "pandas\_libs\parsers.pyx", line 905, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 2042, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 7, saw 2

 

网上找了好几个解决教程都发现解决不了。

后面察觉到会不会一开始新建的文件为.xlsx后缀直接修改成.csv文件后,其实本质上还是一个excel文件,导致read_csv报错。

 

打开c_data.csv文件,将其另存为后缀为.csv文件,命名为“a_data.csv”,后面进行测试对比。

 

(1)demo1:首先我们假设这个c_data.csv文件即使被修改后缀了,仍然是一个excel文件,用read_excel来读取

import pandas as pd

data = pd.read_excel('E:/python_workspace/data_space/c_data.csv')
print(data)

运行后,控制台并没有报错,而是输出读取结果

   id   name  score
0   1   小米   78.01   
1   2   小白   88.02   
2   3   小新   99.03   
3   4   小圆   99.04   
4   5   小羊    NaN

 

(2)demo2:用read_csv读取新的csv文件“a_data.csv”

import pandas as pd

data = pd.read_csv('E:/python_workspace/data_space/a_data.csv')
print(data)

运行后,上面那个报错已经没有出现,只是出现编码问题

Traceback (most recent call last):
  File "pandas\_libs\parsers.pyx", line 1119, in pandas._libs.parsers.TextReader._convert_tokens
  File "pandas\_libs\parsers.pyx", line 1244, in pandas._libs.parsers.TextReader._convert_with_dtype
  File "pandas\_libs\parsers.pyx", line 1259, in pandas._libs.parsers.TextReader._string_convert
  File "pandas\_libs\parsers.pyx", line 1450, in pandas._libs.parsers._string_box_utf8UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 2: invalid continuation byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:/python_workspace/MyWriter/CDA_Demo/pandas_pratices.py", line 3, in <module>
    data = pd.read_csv('E:/python_workspace/data_space/a_data.csv')
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 688, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 460, in _read
    data = parser.read(nrows)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 1198, in read
    ret = self._engine.read(nrows)
  File "E:\python_workspace\MyWriter\venv\lib\site-packages\pandas\io\parsers.py", line 2157, in read
    data = self._reader.read(nrows)
  File "pandas\_libs\parsers.pyx", line 847, in pandas._libs.parsers.TextReader.read
  File "pandas\_libs\parsers.pyx", line 862, in pandas._libs.parsers.TextReader._read_low_memory
  File "pandas\_libs\parsers.pyx", line 941, in pandas._libs.parsers.TextReader._read_rows
  File "pandas\_libs\parsers.pyx", line 1073, in pandas._libs.parsers.TextReader._convert_column_data
  File "pandas\_libs\parsers.pyx", line 1126, in pandas._libs.parsers.TextReader._convert_tokens
  File "pandas\_libs\parsers.pyx", line 1244, in pandas._libs.parsers.TextReader._convert_with_dtype
  File "pandas\_libs\parsers.pyx", line 1259, in pandas._libs.parsers.TextReader._string_convert
  File "pandas\_libs\parsers.pyx", line 1450, in pandas._libs.parsers._string_box_utf8
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 2: invalid continuation byte

 

将编码设置补充进去

import pandas as pd

data = pd.read_csv('E:/python_workspace/data_space/a_data.csv', encoding='gbk')
print(data)

运行后,控制台输出

   id   name  score
0   1   小米   78.01   
1   2   小白   88.02   
2   3   小新   99.03   
3   4   小圆   99.04   
4   5   小羊    NaN

 

综合上面两个测试,可得出:后缀为.xlsx的文件重命名修改成.csv文件后,使用pandas来读取时,仍会被识别为一个excel文件,导致read_csv报错。

 

本篇到此结束~

 

标签:文件,python,excel,read,parsers,._,libs,data,pandas
From: https://www.cnblogs.com/lmei/p/17399700.html

相关文章

  • 关于Python解释器的多版本共存问题
    在日常开发项目时,总会用到多种不同版本的解释器,那如何切换解释器呢?不能卸载重装需求版本的解释器吧,如此原解释器内pip的模块也丢失掉了,那我们应该怎么做呢?首先我们要前往Python的官网:http://www.python.org然后就是安装解释器,在我的文件内安装了三款解释器,为了方便看,3.6.8的......
  • 【计算几何】Python求解覆盖N个点的最小圆
    目录题目地址代码Prompt题目地址https://ac.nowcoder.com/acm/contest/52826/D代码importsysimportmathdefeuclidean_distance(p1,p2):returnmath.sqrt((p1[0]-p2[0])**2+(p1[1]-p2[1])**2)defmake_circle(points):shuffled=list(points)......
  • Python代码:微网-预测+调度(多种预测算法以及强化学习调度算法)
    Python代码:微网-预测+调度(多种预测算法以及强化学习调度算法)关键词:光伏/负荷预测强化学习LSTM优化调度微网模型预测控制参考文档:《EnergyManagement和EconomicEvaluationofGrid-ConnectedMicrogridOperation》复现仿真平台:Python主要内容:该项目的目标是探索并网微......
  • 搜狗输入法(Windows版)快速输入直角引号「」的方法(修改配置文件,将方头括号“[”更为”「
    注意⚪以下代替方案,是将[]修改为「」,而并非修改“”。⚪修改后,在搜狗浏览器中文半角模式下,可按[,打出「」将来如需打出[],可以在搜狗浏览器的设置中,自定义短语实现:替换步骤打开:%USERPROFILE%\AppData\LocalLow\SogouPY.users\00000001\punctures.ini若该路径无此文件,请参......
  • python常用的时间模块之datetime模块
    一、基本类型1、date类datetime.date(2023,5,1) 2、time类datetime.time(12,20,20,10) 3、datetime类datetime.datetime(2023,5,1,12,20,20,10) 4、timedelta类datetime.timedelta(weeks=1,days=1,hours=1,minutes=1,seconds=1,microseconds=1)提......
  • Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python
    Python学习之八_调用Outlook发送邮件以及调用远程windows上面的python摘要之前只有一个需求是发送加密邮件.之前一直是使用linux进行发送.但是总是无法发送加密邮件.最近学习python,发现可以使用python来调用outlook来发送邮件.这样就比较简单了.可以直接使用outlook的......
  • python安全攻防学习笔记一 语言基础篇
    1.列表python中创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如:l1=["你好",0,1,2,3,4,5,6,7,8,9,0]l2=["嘟嘟嘟嘟嘟","雪球来了"]列表中的数据可以进行增删改查,方法有:dell1[1]#删除指定的数据l1.append("我不好")#在末尾添加数据......
  • Python组合数据类型
    本文转自:https://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html一、  String:字符串放在单引号、双引号、三引号(多行时)中,从0开始索引,支持n  查:find、index、n  切片: s[0:2]、s[1:]n  连接:“abc”+“ef”=>“abcdef”、joinn  分割:splitn  格式化: ......
  • TS从目录中提取所有指定扩展名的文件
    importpathfrom'path'importfsfrom'fs'/***从指定目录中提取指定后缀名的所有文件*@paramsrcPathstring要提取文件的目录路径,相对或绝对路径都可*@paramdestPathstring提取后的文件存放的目录路径,相对或绝对路径都可*@paramextsstring[]要提取的文......
  • crontab设置定时任务脚本文件每秒运行一次,每个月最后一天的21点到22点 每20分钟(1200秒
    每秒运行一次#!/bin/bashstep=2for((i=0;i<60;i=(i+step)));dophp/home/www/tp6/thinkzhangsleep$stepdoneexit0每个月最后一天的21点到22点20分钟(1200)执行一次#!/bin/bashtoday=`date+%d`hour=`date+%H`last_day=`cal|xargs|awk'{print$NF}'`if["$to......