用Python把csv文件批量修改编码为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文件的批量乱码转化:文章来源地址https://www.toymoban.com/news/detail-731396.html

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格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 简单shell批量文件转换gbk转为utf8编码

    简单shell批量文件转换gbk转为utf8编码

    matlab打包成exe时发现中文乱码,查找发现是gbk编码问题,找半天没找到合适的批量转换编码工具,就搞了个简单的shell来实现 windows上有安装git bash命令行的话可以直接跑sh脚本,没有的话下一个很快。linux可以直接运行 方式一 将以上代码复制到记事本里 更改代码中目录和文件后

    2024年02月13日
    浏览(10)
  • 如何修改csv文件的编码形式

    如何修改csv文件的编码形式

    不同的软件版本更改csv文件编码的位置不同,以下提供一种最简单的更改csv文件编码方法: 1.csv文件右键打开方式,选择记事本,右下角即为当前的编码形式  以图所示:当前的编码形式为utf-8  2.更改编码形式 文件另存为,既可以在编码位置更改编码形式了 可以在图片中看

    2024年02月16日
    浏览(7)
  • 下载文件,自动获取后端返回文件名,并自动识别文件格式,如果是iso-8859-1编码转换utf-8

    点击下载文件按钮,获取后端返回接口,根据请求头自动解析文件名称,自动识别文件类型后缀名,如果中文是iso-8859-1格式转换为utf-8,否则下载不了.

    2024年02月07日
    浏览(34)
  • Notepad++批量更改文件编码格式及文档格式

    背景: 在项目中遇到Windows平台VS的MSVC编译不识别Unix下UTF-8编码导致的编译失败问题。需要将Unix下的UTF-8转为UTF-8-BOM格式。网上找了些方式,之后又深入探究了下文档转换的可能性,共享给大家。(当然Windows和Unix平台代码格式编译问题还有其他关于编码格式选哪个好或在MS

    2024年02月04日
    浏览(8)
  • Azure DevOps Server 2022新功能:导入和导出到CSV文件,实现批量修改工作项

    Azure DevOps Server 2022新功能:导入和导出到CSV文件,实现批量修改工作项

    Azure DevOps Server(之前名称为TFS)作为微软的软件研发管理平台产品,由于系统涉及到软件开发的全过程和多种角色,服务器中积累了大量的软件开发过程数据,例如需求、评审、Bug和测试用例等。在对这些数据进行批量操作(例如批量更新、导入、导出和数据分析)的过程中,进

    2024年02月05日
    浏览(14)
  • Redis如何把字符集的编码格式设置为UTF-8

    Redis如何把字符集的编码格式设置为UTF-8

    一、问题复现(编码错乱)         刚安装好的redis在使用的过程中,若使用到了汉字,则在显示的时候,汉字是不能够正常显示的,因为redis在解析的过程中,会将汉字转换成其他编码的格式,如下图: 二、Redis支持哪些类型的编码?         Redis是一款开源的内存数据

    2024年02月02日
    浏览(11)
  • 使用Python批量将Word文件转为PDF文件

    使用Python批量将Word文件转为PDF文件

    说明:在使用Minio服务器时,无法对word文件预览,如果有需要的话,可以将word文件转为pdf文件,再存储到Minio中,本文介绍如何批量将word文件,转为pdf格式的文件; 首先,需要安装一个库, pywin32 ; 可以在cmd窗口敲下面的命令安装,使用阿里云镜像: 如果你使用的是pycha

    2024年02月12日
    浏览(8)
  • Python 读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd0 in position 0:invalid

    Python 读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd0 in position 0:invalid

    问题描述:我在读取csv文件时 python报了如下错误 或者报了以下错误:UnicodeDecodeError: \\\'gbk\\\' codec can\\\'t decode byte 0xb1 in position 5: illegal multibyte sequence 目录 问题引出: 错误示范如下: 解决方案如下: 我先创建的xlsx 或者 xls文件,然后再改成以csv为后缀的文件,最后在python里读取失

    2024年02月16日
    浏览(38)
  • 织梦GBK/GB2312转utf-8编码操作步骤(全站修改方法)

    目前MIP对编码是有严格要求,必须是UTF-8,那么对于大部分GBK或者GB2312的用户只能先将网站整体进行编码转换,才能进行MIP改造,不然改造后的页面是乱码一大片。 为什么MIP只支持utf-8?目前部分手机自带浏览器仅支持UTF-8,打开GBK的网站会出现乱码,所以为了手机的兼容性,

    2023年04月24日
    浏览(25)
  • 【音视频原理】图像相关概念 ⑥ ( YUV 与 RGB 之间的转换 | YUV444 颜色编码格式 转为 RGB 格式 | RGB 颜色编码格式 转为 YUV444 格式 )

    YUV 与 RGB 颜色格式之间进行转换时 , 涉及一系列的数学运算 ; YUV 颜色编码格式 转为 RGB 格式 的 转换公式 取决于 于 YUV 的具体子采样格式 : YUV444 YUV422 YUV420 YUV444 格式 转为 RGB 格式 的 转换公式如下 : R = Y + 1.13983 * (V - 128) G = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128) B = Y + 2.03211 * (U

    2024年01月24日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包