Python批量修改文件编码为 utf-8, 亲测Windows-1254可成功转码!

        今天在批量读取数据表时初次遇到 "Windows-1254" 的编码方式, 导致pd.read_csv无法正常读取.查阅了很多资料总结出了这篇简单易理解的文件转码方式,分享给大家一起学习.

1.获取文件列表

 import os
# 读取文件夹,获取文件列表
folder_path = r"S:\import"
file_list = os.listdir(folder_path)
file_list

2.遍历文件列表, 依次打开数据表获取编码信息, 将不是'utf-8'的文件转码为'utf-8'.

注意点:

(1) 只适用于csv文件转码, xlsx千万不要转utf-8, 文件会损毁!!!

(2)此步骤处理时间较长, 如果有更省时的处理方式欢迎留言.

(3)保险起见转码后的文件建议另存, 写入路径可自行修改.

for a in file_list:
    import chardet

    # ①确定文件编码,读取数据进行编码检测
    with open(folder_path+"\\"+a,'rb') as f:
        result = chardet.detect(f.read())
        encoding = result['encoding']
        if encoding != 'utf-8':
            # ②转码为utf-8

            # errors='ignore'谨慎使用,目前未发现对数据是否有影响,欢迎留言讨论
            with open(folder_path+"\\"+a,'r', encoding=encoding,errors='ignore') as f:
                text = f.read()
            with open(folder_path+"\\"+"Trans"+a,'w', encoding='utf-8') as f:
                f.write(text)
            print("{} 编码方式已从 {} 改为 utf-8".format(a, encoding))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用`codecs`模块来修改文本文件编码UTF-8格式。具体方法如下: ```python import codecs # 打开需要修改编码文件,并指定原始编码 with codecs.open('file.txt', 'r', '原始编码') as f: content = f.read() # 将内容重新编码UTF-8格式 with codecs.open('file.txt', 'w', 'utf-8') as f: f.write(content) ``` 在这个示例中,我们使用`codecs.open()`函数打开需要修改编码文件,并指定原始编码。然后,我们读取文件内容,并将其重新编码UTF-8格式。最后,我们使用`codecs.open()`函数以写入模式打开文件,并将重新编码后的内容写入文件中。 需要注意的是,上述代码中的`原始编码`需要替换为实际的原始编码,比如说`gbk`、`utf-16`等。如果不知道原始编码,可以尝试使用`chardet`模块自动检测编码,如下所示: ```python import codecs import chardet # 打开需要修改编码文件,并自动检测原始编码 with open('file.txt', 'rb') as f: rawdata = f.read() result = chardet.detect(rawdata) encoding = result['encoding'] # 将内容重新编码UTF-8格式 with codecs.open('file.txt', 'w', 'utf-8') as f: f.write(rawdata.decode(encoding).encode('utf-8')) ``` 在这个示例中,我们使用`open()`函数以二进制模式打开文件,并读取文件内容。然后,我们使用`chardet.detect()`函数自动检测原始编码。最后,我们将内容重新编码UTF-8格式,并写入文件中。 需要注意的是,上述代码中的`result['encoding']`可能返回`None`,表示无法确定原始编码。在这种情况下,需要手动指定原始编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值