用Python把csv文件批量修改编码为UTF-8格式并转为Excel格式的方法

 更新时间:2023年09月19日 09:05:17   作者:程皮  
有时候用excel打开一个csv文件,中文全部显示乱码,然后手动用notepad++打开,修改编码为utf-8并保存后,再用excel打开显示正常,本文将给大家介绍一下用Python把csv文件批量修改编码为UTF-8格式并转为Excel格式的方法,需要的朋友可以参考下

有时候用excel打开一个csv文件,中文全部显示乱码。然后手动用notepad++打开,修改编码为utf-8并保存后,再用excel打开显示正常。

使用Python通过很少代码就能将上面过程自动化。

导入3个模块

import pandas as pd  
import os 
import chardet

chardet 模块用于得到文件的编码格式,pandas 按照这个格式读取,然后保存为xlsx格式。

获取filename文件的编码格式

def get_encoding(filename):
    """
    返回文件编码格式
    """
    with open(filename,'rb') as f:
        return chardet.detect(f.read())['encoding']

文件转码处理

保存为utf-8编码xlsx格式文件,支持csv, xls, xlsx 格式的文件乱码处理。需要注意,如果读入文件为csv格式,保存时要使用xlsx格式:

def to_utf8(filename):
    """
    保存为 to_utf-8
    """
    encoding = get_encoding(filename)
    ext = os.path.splitext(filename)
    if ext[1] =='.csv':
        if 'gb' in encoding or 'GB' in encoding:
            df = pd.read_csv(filename,engine='python',encoding='GBK')
        else:
            df = pd.read_csv(filename,engine='python',encoding='utf-8')
        df.to_excel(ext[0]+'.xlsx')
    elif ext[1]=='.xls' or ext[1] == '.xlsx':
        if 'gb' in encoding or 'GB' in encoding:
            df = pd.read_excel(filename,encoding='GBK')
        else:
            df = pd.read_excel(filename,encoding='utf-8')
        df.to_excel(filename)
    else:
        print('only support csv, xls, xlsx format')

批量转换

上面函数实现单个文件转化,下面batch_to_utf8 实现目录 path 下所有后缀为ext_name文件的批量乱码转化:

def batch_to_utf8(path,ext_name='csv'):
    """
    path下,后缀为 ext_name的乱码文件,批量转化为可读文件
    """
    for file in os.listdir(path):
        if os.path.splitext(file)[1]=='.'+ext_name:
            to_utf8(os.path.join(path,file))

使用

if __name__ == '__main__':
  batch_to_utf8('.') # 对当前目录下的所有csv文件保存为xlsx格式,utf-8编码的文件

以上就是用Python把csv文件批量修改编码为UTF-8格式并转为Excel格式的方法的详细内容,更多关于Python UTF-8格式并转为Excel格式的资料请关注脚本之家其它相关文章!

相关文章

  • Windows下用py2exe将Python程序打包成exe程序的教程

    Windows下用py2exe将Python程序打包成exe程序的教程

    这篇文章主要介绍了Windows下用py2exe将Python程序打包成exe程序的教程,文中主要针对Python3.x版本进行说明,需要的朋友可以参考下
    2015-04-04
  • 深入了解python的函数参数

    深入了解python的函数参数

    这篇文章主要为大家介绍了python的函数参数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 教你用python从日期中获取年、月、日和星期等30种信息

    教你用python从日期中获取年、月、日和星期等30种信息

    在日常的工作,经常需要获取时间等相关信息,下面这篇文章主要给大家介绍了关于如何用python从日期中获取年、月、日和星期等30种信息的相关资料,需要的朋友可以参考下
    2022-07-07
  • networkx库绘制带权图给无权图加权重输出

    networkx库绘制带权图给无权图加权重输出

    这篇文章主要为大家介绍了Python networkx库绘制带权图给无权图加权重并输出权重的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python写入文件如何取消自动换行

    python写入文件如何取消自动换行

    这篇文章主要介绍了python写入文件如何取消自动换行问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python进行统计建模

    Python进行统计建模

    这篇文章主要介绍了Python进行统计建模的方法,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
    2020-08-08
  • 详解python中的闭包

    详解python中的闭包

    这篇文章主要介绍了python中闭包的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • python创建一个最简单http webserver服务器的方法

    python创建一个最简单http webserver服务器的方法

    这篇文章主要介绍了python创建一个最简单http webserver服务器的方法,实例分析了Python操作http创建服务器端的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Python利用柯里化实现提高代码质量

    Python利用柯里化实现提高代码质量

    柯里化(Currying)是函数式编程中的一个重要概念,它可以将一个多参数函数转化为一系列单参数函数的组合,本文将详细解释什么是柯里化,如何在Python中实现柯里化,感兴趣的可以了解下
    2024-01-01
  • PyTorch读取Cifar数据集并显示图片的实例讲解

    PyTorch读取Cifar数据集并显示图片的实例讲解

    今天小编就为大家分享一篇PyTorch读取Cifar数据集并显示图片的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论