如何用pandas批量读取不同编码格式的CSV文件

背景说明

因为个人工作的原因,数据来源的CSV格式文件的编码格式并不固定,所以需要一个可以批量读取不同编码格式的CSV。

逻辑

逻辑就是通过chardet模块来读取文件的编码格式
chardet.detect(f.read())["encoding"]这段代码可以输出文件的编码格式
然后通过判断不同的编码格式来分开执行。

整体代码如下

import chardet
import pandas as pd

def read_csv_diy(paths): # 这里需要传一个文件地址
    with open(paths,'rb') as f:
        encode = chardet.detect(f.read())["encoding"] #得到文件的编码方式
    if encode == 'utf-8':  #按文件编码方式读取文件
        data = pd.read_csv(paths,encoding="utf-8",sep=',')
    elif encode == 'GB2312': #中文处理方式比较复杂,gbk如果报错的话使用gb18030方式读取
        try:
            data = pd.read_csv(paths,encoding="gbk",sep=',')
        except UnicodeDecodeError:
            data = pd.read_csv(paths,encoding="GB18030",sep=',')
    elif encode == 'UTF-8-SIG':
        data = pd.read_csv(paths,encoding="UTF-8-SIG",sep=',')
    elif encode == "iso-8859-1":
        data = pd.read_csv(paths,encoding=="gbk",sep=',')
    else :
        print(encode)
    return data
 
fullPath= r"C:\Users\DELL\Desktop\20240110090000.csv"
df = read_csv_diy(fullPath)
print(df)

大家有没有更好的方法呢?
附上参考链接 https://www.jianshu.com/p/6c7ef7620f05

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值