您的位置:首页 > 编程语言 > Python开发

基础入门_Python-模块和包.运维开发中chartdet编码检测的最佳实践?

2016-11-23 12:33 721 查看
简单介绍:
说明: 此模块主要用来实现字符串/文件编码检测

快速安装:
pip install --upgrade chardet


常用方法:
chardet.detect(aBuf) -> dict
说明: 检测字符串编码,返回一个字典包含confidence编码匹配准确率,encoding最终检测的编码,当aBuf为空时可能encoding为None,所以最好判断一下

最佳实践:
1. FirmwareUpload会自动对接OA系统及对应SVN服务器,自动定期读取最新OA发布的固件程序及ReleaseNote,但ReleaseNote中间可能由OA流经不同的部门被修改,无法区别同步下来的编码,由于最终会读取ReleaseNote文件生成对应的目录结构自动发布到UpgradeServer,所以希望可以准确识别编码统一转换为utf-8编码?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2016-11-23 11:14:15
# @Author  : 李满满 (xmdevops@vip.qq.com)
# @Link    : http://xmdevops.blog.51cto.com/ # @Version : $Id$
from __future__ import absolute_import
# 说明: 导入公共模块
import os
import chardet
# 说明: 导入其它模块
if __name__ == '__main__':
res_lines = []
with open('ChangeLog_Chinese.dat', 'r+b') as fd:
res_line = os.linesep
for line in fd:
line = line.lstrip()
encoding = chardet.detect(line).get('encoding', None)
print encoding
if encoding:
res_line = line.decode(encoding, 'replace').encode('utf-8')
res_lines.append(res_line)
print res_lines
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 基础入门