Python判断文件和字符串编码类型的实例


Posted in Python onDecember 21, 2017

python判断文件和字符串编码类型可以用chardet工具包,可以识别大多数的编码类型。但是前几天在读取一个Windows记事本保存的txt文件时,GBK却被识别成了KOI8-R,无解。

然后就自己写了个简单的编码识别方法,代码如下:

coding.py

# 说明:UTF兼容ISO8859-1和ASCII,GB18030兼容GBK,GBK兼容GB2312,GB2312兼容ASCII
CODES = ['UTF-8', 'UTF-16', 'GB18030', 'BIG5']
# UTF-8 BOM前缀字节
UTF_8_BOM = b'\xef\xbb\xbf'

# 获取文件编码类型
def file_encoding(file_path):
 """
 获取文件编码类型\n
 :param file_path: 文件路径\n
 :return: \n
 """
 with open(file_path, 'rb') as f:
  return string_encoding(f.read())

# 获取字符编码类型
def string_encoding(b: bytes):
 """
 获取字符编码类型\n
 :param b: 字节数据\n
 :return: \n
 """
 # 遍历编码类型
 for code in CODES:
  try:
   b.decode(encoding=code)
   if 'UTF-8' == code and b.startswith(UTF_8_BOM):
    return 'UTF-8-SIG'
   return code
  except Exception:
   continue
 return '未知的字符编码类型'

说明:file_encoding方法用于判断文件编码类型,参数为文件路径;string_encoding方法用于判断字符串编码类型,参数为字符串对应的字节数据

使用示例:

import coding
file_name = input('请输入待识别文件路径:\n')
encoding = coding.file_encoding(file_name)
print(encoding)

以上这篇Python判断文件和字符串编码类型的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
理解python多线程(python多线程简明教程)
Jun 09 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
python根据出生日期返回年龄的方法
Mar 26 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
浅谈python字符串方法的简单使用
Jul 18 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Linux下python3.6.1环境配置教程
Sep 26 Python
django使用django-apscheduler 实现定时任务的例子
Jul 20 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python如何使用PIL Image制作GIF图片
May 16 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 #Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 #Python
基于Python的文件类型和字符串详解
Dec 21 #Python
Python绘制七段数码管实例代码
Dec 20 #Python
python代码实现ID3决策树算法
Dec 20 #Python
python决策树之CART分类回归树详解
Dec 20 #Python
python中文乱码不着急,先看懂字节和字符
Dec 20 #Python
You might like
一些 PHP 管理系统程序中的后门
2009/08/05 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
nginx 设置多个站跨域
2021/03/09 Servers
JS和JQ的event对象区别分析
2014/11/24 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
图解js图片轮播效果
2015/12/20 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
LayUI表格批量删除方法
2018/08/15 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
js实现双色球效果
2020/08/02 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
Python中的ConfigParser模块使用详解
2015/05/04 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python对html过滤处理的方法
2018/10/21 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
毕业生实习期转正自我鉴定
2014/09/26 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
pandas数值排序的实现实例
2021/07/25 Python
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫