Python批量将csv文件编码方式转换为UTF-8

import os
import pandas as pd
import chardet


def convert_encoding(file_path, file_encoding):
    # try:
    # 读取文件
    with open(file_path, 'rb') as f:
        data = f.read()
        # 检测文件编码方式
        file_encoding = chardet.detect(data)['encoding']
        print(file_encoding)
    # 重新编码文件
    if file_encoding != 'utf-8':
        df = pd.read_csv(file_path, sep=None, encoding=file_encoding, engine='python')
        df.to_csv(file_path, sep=',', encoding='utf-8', index=False)
    # except Exception as e:
    #     print('Error:', e)


def encoding_transform(folder_path, file_ext):
    # 遍历文件夹下所有文件
    for file_name in os.listdir(folder_path):
        file_path = os.path.join(folder_path, file_name)
        # 如果是csv文件
        if os.path.isfile(file_path) and os.path.splitext(file_path)[1] == '.' + file_ext:
            convert_encoding(file_path, 'utf-8')


encoding_transform(r'D:\csv_test', 'csv')

在用office打开时,可能会出现乱码的情况,将encoding='utf-8'变成encoding='utf_8_sig'即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值