如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8

如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8

在日常开发中,我们经常会遇到不同编码格式的文件,比如 UTF-8ASCIIWindows-1252ISO-8859-1 等。文件编码不一致可能导致读取或处理文件时出现乱码,特别是在批量处理数据文件时。因此,将文件编码统一为 UTF-8 是非常有必要的。

本篇文章将带您一步步使用 Python 来批量检测 .jsonl 文件的编码类型,并将非 UTF-8 编码的文件转换为 UTF-8,确保所有文件的编码一致性。

文章目录

  • 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
  • 作者简介
    • 猫头虎是谁?
    • 作者名片 ✍️
    • 加入我们AI共创团队 🌐
    • 加入猫头虎的共创圈,一起探索编程世界的无限可能! 🚀
  • 正文
    • 使用 Python 检测文件编码
      • 准备工具
      • 编写编码检测代码
      • 代码解析
      • 运行代码
    • 将非 UTF-8 编码的文件转换为 UTF-8
      • 代码解析
      • 运行代码
    • 总结
  • 粉丝福利区
      • 联系我与版权声明 📩

作者简介


猫头虎是谁?

大家好,我是 猫头虎,猫头虎技术团队创始人,也被大家称为猫哥。我目前是COC北京城市开发者社区主理人COC西安城市开发者社区主理人,以及云原生开发者社区主理人,在多个技术领域如云原生、前端、后端、运维和AI都具备丰富经验。

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用方法、前沿科技资讯、产品评测、产品使用体验,以及产品优缺点分析、横向对比、技术沙龙参会体验等。我的分享聚焦于云服务产品评测、AI产品对比、开发板性能测试和技术报告

目前,我活跃在CSDN、51CTO、腾讯云、阿里云开发者社区、知乎、微信公众号、视频号、抖音、B站、小红书等平台,全网粉丝已超过30万。我所有平台的IP名称统一为猫头虎猫头虎博主

我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。


猫头虎分享python


作者名片 ✍️

  • 博主猫头虎
  • 全网搜索关键词猫头虎
  • 作者微信号Libin9iOak
  • 作者公众号猫头虎技术团队
  • 更新日期2024年10月10日
  • 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

加入我们AI共创团队 🌐

  • 猫头虎AI共创社群矩阵列表
    • 点我进入共创社群矩阵入口
    • 点我进入新矩阵备用链接入口

加入猫头虎的共创圈,一起探索编程世界的无限可能! 🚀


猫头虎分享PYTHON

正文


使用 Python 检测文件编码

准备工具

在 Python 中,我们可以使用 chardet 库来检测文件的编码。这个库非常实用,它能够自动检测文件的编码类型。首先,我们需要安装 chardet 库:

pip install chardet

编写编码检测代码

首先,我们编写一个 Python 脚本,遍历指定文件夹中的 .jsonl 文件,并检测每个文件的编码类型。我们会将所有检测到的编码类型去重,并输出唯一的编码类型到控制台,便于分析文件的编码分布情况。

import os
import chardetdef detect_encoding(file_path):# 检测文件编码with open(file_path, 'rb') as f:raw_data = f.read()result = chardet.detect(raw_data)return result['encoding']# 指定文件夹路径
folder_path = "C:/path/to/your/jsonl_files"
encoding_results = set()  # 使用集合去重# 遍历文件夹中的所有 .jsonl 文件并检测编码
for filename in os.listdir(folder_path):if filename.endswith(".jsonl"):file_path = os.path.join(folder_path, filename)encoding = detect_encoding(file_path)encoding_results.add(encoding)  # 添加到集合中,自动去重print(f"文件: {filename} 编码: {encoding}")# 输出唯一的编码类型到控制台
print("\n唯一的编码类型:")
for encoding in encoding_results:print(encoding)

代码解析

  1. 编码检测函数detect_encoding 函数使用 chardet 库检测文件的编码类型,返回检测到的编码格式。
  2. 遍历文件夹:指定文件夹路径后,代码会遍历该文件夹下所有 .jsonl 文件,调用 detect_encoding 函数来检测每个文件的编码。
  3. 结果去重:使用集合 encoding_results 存储编码类型,从而自动去重,最终输出唯一的编码类型。

运行代码

将代码保存为 detect_encoding_unique.py,然后运行脚本:

python detect_encoding_unique.py

在终端中,您将看到每个文件的编码类型,以及所有文件的唯一编码类型列表。这样我们可以快速了解文件夹中的 .jsonl 文件包含哪些编码格式,为后续的编码转换提供依据。

将非 UTF-8 编码的文件转换为 UTF-8

检测完编码之后,我们可以进一步将所有非 UTF-8 编码的文件转换为 UTF-8。以下是转换代码:

import os
import chardetdef convert_to_utf8(file_path):# 检测文件编码with open(file_path, 'rb') as f:raw_data = f.read()result = chardet.detect(raw_data)encoding = result['encoding']# 如果文件已经是 UTF-8 编码,跳过转换if encoding.lower() == 'utf-8':print(f"{file_path} 已经是 UTF-8 编码,无需转换。")return# 使用检测到的编码读取文件内容并转换为 UTF-8 编码with open(file_path, 'r', encoding=encoding) as f:content = f.read()# 将内容重新保存为 UTF-8 编码with open(file_path, 'w', encoding='utf-8') as f:f.write(content)print(f"{file_path} 已成功从 {encoding} 编码转换为 UTF-8 编码。")# 指定文件夹路径
folder_path = "C:/path/to/your/jsonl_files"# 遍历文件夹中的所有 .jsonl 文件
for filename in os.listdir(folder_path):if filename.endswith(".jsonl"):file_path = os.path.join(folder_path, filename)convert_to_utf8(file_path)

代码解析

  1. 编码检测:代码会检测文件的编码格式,如果是 UTF-8,则跳过该文件。
  2. 编码转换:对于非 UTF-8 文件,代码使用原编码读取文件内容,并重新保存为 UTF-8 编码。
  3. 遍历文件:代码遍历指定文件夹中的所有 .jsonl 文件,并对每个文件执行编码检测和转换。

运行代码

将代码保存为 convert_to_utf8.py,然后运行脚本:

python convert_to_utf8.py

在运行过程中,脚本会显示每个文件的编码转换状态。所有非 UTF-8 编码的文件都将被转换为 UTF-8,确保编码一致性。

总结

通过以上步骤,我们实现了以下功能:

  1. 编码检测:使用 chardet 库自动检测文件编码,并去重显示唯一编码类型。
  2. 编码转换:批量将非 UTF-8 编码的 .jsonl 文件转换为 UTF-8,确保文件编码一致性。

这两个脚本可以帮助开发者快速批量处理文件的编码问题,避免编码不一致导致的乱码或读取错误。在日常开发和数据处理中,确保文件编码一致性是非常重要的一步,特别是在处理来自不同系统或来源的数据文件时。

希望本文对您有所帮助!如果您有更复杂的需求或需要处理更多编码格式,chardet 仍然是一个值得推荐的工具。您也可以根据需要,将这些脚本拓展应用到其他文件类型和编码场景中。


猫头虎

粉丝福利区


👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击文末名片获取更多信息。我是猫头虎博主,期待与您的交流! 🦉💬


联系我与版权声明 📩

  • 联系方式
    • 微信: Libin9iOak
    • 公众号: 猫头虎技术团队
  • 版权声明
    本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。

点击✨⬇️下方名片⬇️✨,加入猫头虎AI共创社群矩阵。一起探索科技的未来,共同成长。🚀

猫头虎AI共创计划

🔗 猫头虎抱团AI共创社群 | 🔗 Go语言VIP专栏 | 🔗 GitHub 代码仓库 | 🔗 Go生态洞察专栏
✨ 猫头虎精品博文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三十八】【QT开发应用】vlcplayer视频播放器(一)实现视频播放,视频暂停,视频停止,进度条调节,音量调节,时长显示功能

效果展示 vlcplayer_test视频播放器 MainWidget.ui 注意控件的布局和命名,控件的命名和信号与槽函数的绑定有关,所以这点很重要。 下载VLC组件和环境配置 videolan下载地址我下载的是vlc-3.0.8-win64版本. 将下载的文件复制粘贴到项目文件中. 复制粘…

【LeetCode每日一题】——1791.找出星型图的中心节点

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 图 二【题目难度】 简单 三【题目编号】 1791.找出星型图的中心节点 四【题目描述】 有一个…

深入了解 美国高防 CN2 :如何提升全球化业务的网络安全与性能

美国高防 CN2 的重要性 在跨国企业和全球化业务的不断扩展下,对高性能和安全的网络连接需求不断增加。美国高防 CN2(Global Internet Access)以其卓越的跨境传输效率和强大的防护能力,成为许多企业关注的焦点。尤其是对电商、游戏…

Endnote如何关联Word,在Word上通过Endnote插入文献

1、Word版本已被激活 首先检查Word版本是否已经被激活,不管是正版还是破解版,未激活状态(试用)可能会导致关联不成功。如下图所示为已激活版本,在“文件”—“账户”可看。 2、勾选开发工具 其次,打开Wor…

1688旺铺主页首页装修 代码 首页悬浮视频怎么做?阿里巴巴代码装修悬浮视频代码固定视频悬浮漂浮视频

1688旺铺主页首页装修 代码 首页悬浮视频怎么做?阿里巴巴代码装修悬浮视频代码固定视频悬浮漂浮视频 一秒美工工具

【错误描述:“L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误”】

解决办法: 一、检查并更改网络协议 (如果网络协议更改完成,还是链接失败,直接看 第二点) 1、打开网络和Internet 设置 2、找到更改适配器选项 3、先择你要链接VPN,右键选择属性,之后选择安…

基于SSM学生竞赛模拟系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,公告信息管理,试题管理,论坛交流,试卷管理,系统管理 前台账号功能包括:系统首页,个人中心,公告…

罗马仕、西圣、安克充电宝哪款品牌更好?综合测评对比谁是TOP.1

罗马仕、西圣、安克充电宝哪款品牌更好?在移动设备日益普及的今天,充电宝已成为许多人的必备配件。市场上涌现出多个知名品牌的充电宝,其中罗马仕、西圣和安克尤为受到消费者的关注。这三个品牌在产品质量、技术创新和用户体验方面各有千秋&a…

spring boot + mybatis + mysql 批量更新报错

问题描述&#xff1a;spring boot mybatis mysql 批量更新报错&#xff0c;如下图所示&#xff1a; mapper文件如下&#xff1a; <!--更新样品项目结果/检验结果内容&#xff0c;提交结果--><update id"submitResult" parameterType"com.weiyu.pojo…

Native Crash 信号速查

重点信号 SIGSEGV&#xff08;11&#xff09; signal segmentation violation&#xff1a;段错误无效内存访问访问无权访问的内存空指针、越界访问&#xff08;mmap&#xff1f;&#xff09; SIGBUS&#xff08;7&#xff09; Bus Error&#xff1a;总线错误非法内存访问访问 …

mac-ubuntu虚拟机(扩容-共享-vmtools)

一、磁盘扩容 使用GParted工具对Linux磁盘空间进行扩展 https://blog.csdn.net/Time_Waxk/article/details/105675468 经过上面的方式后还不够&#xff0c;需要再进行下面的操作 lvextend 用于扩展逻辑卷的大小&#xff0c;-l 选项允许指定大小。resize2fs 用于调整文件系统的…

SQL进阶技巧:巧用异或运算解决经典换座位问题

目录 0 问题描述 1 数据准备 2 问题分析 2.1 什么是异或 2.2异或有什么特性? 2.3 异或应用 2.4 本问题采用异或SQL解决方案 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。…

质数的小游戏~(牛客,cf)

添加链接描述 H 题&#xff1a; n 的范围是 1e6 大致的思路 就是 每一段 固定一个质数&#xff0c;然后这一段中的 数下标 的和都是这个质数。 对于[1 n] 这些数 &#xff0c;对于n 向前找到 一个比他大的最小的质数。假设这个质数nj 。那么也就是说 我n 这个数应该放在下标为…

【热门主题】000018 人工智能深度学习模型:探索与应用

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

Linux学习_8

第七章命令解释器-shell 主要包括Linux中特殊符号&#xff0c;命令别名&#xff0c;命令历史 概述&#xff1a; shell&#xff1a;壳&#xff0c;命令解释器&#xff0c;负责解析用户输入的命令 type命令&#xff1a; 查看命令是内置命令、外置命名、alias命令 type -参数 命…

C++从入门到起飞之——红黑树封装map和set 全方位剖析!

目录 1、map和set的整体框架 2、map和set迭代器的实现 3、map支持[] 4、完整源码 set.h map.h RBTree.h 1、map和set的整体框架 因为map和set的底层都是红黑树&#xff0c;所以我们考虑用一个红黑树的类模版去实例化map和set对象&#xff01;不过&#xff0c;map节点中存…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

git仓库分支

操作 切换分支 git checkout 1.2.5 git checkout 1.3.0 使用命令切换分支之后&#xff0c;代码内容加载过后也是切换好的

突破挑战,创新前行 | 生信科技SOLIDWORKS 2025新品发布会·合肥站精彩回顾

2024年10月18日&#xff0c;由生信科技举办的首场SOLIDWORKS 2025新产品发布会在安徽合肥圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能&#xff0c;探索制造业数字化转型之路。 合肥站活动日&#xff0c;由生信科技副总经理徐建开场。他以智造无界&…

《C Primer Plus》中文版第十六章习题

16.17 复习题 1. 下面的几组代码由一个或多个宏组成&#xff0c;其后是使用宏的源代码。在每种情况下代码的结果是什么?这些代码是否是有效代码?(假设其中的变量已声明)。 a. #define FPM 5280 dist FPM * miles; b. #define FEET 4 #define POD FEET FEET plort …