基础入门_Python-模块和包.运维开发中chartdet编码检测的最佳实践?
2016-11-23 12:33
721 查看
简单介绍:
说明: 此模块主要用来实现字符串/文件编码检测
快速安装:
常用方法:
最佳实践:
1. FirmwareUpload会自动对接OA系统及对应SVN服务器,自动定期读取最新OA发布的固件程序及ReleaseNote,但ReleaseNote中间可能由OA流经不同的部门被修改,无法区别同步下来的编码,由于最终会读取ReleaseNote文件生成对应的目录结构自动发布到UpgradeServer,所以希望可以准确识别编码统一转换为utf-8编码?
说明: 此模块主要用来实现字符串/文件编码检测
快速安装:
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-模块和包.运维开发中chartdet编码检测的最佳实践
- 基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?
- 基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?
- 基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?
- 基础入门_Python-模块和包.运维开发中watchdog事件监视的最佳实践?
- 基础入门_Python-模块和包.运维开发中MySQLdb CRUD操作的最佳实践?
- 基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?
- 基础入门_Python-内建函数.运维开发中eval内建函数的最佳实践?
- 基础入门_Python-模块和包.深入Celery之应用配置/独立模块配置实践?
- 运维开发中inspect自省模块的最佳实践
- 运维开发中日志模块logging的最佳实践
- 运维开发中内建模块getopt的最佳实践
- CrazyWing:Python自动化运维开发实战 十九、html基础入门
- Python运维自动化开发之Paramiko模块
- Python运维自动化开发之Fabric模块
- Python自动化运维 技术与最佳实践
- Python运维自动化开发之Fabric模块
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- 运维学python之爬虫基础篇(二)urllib模块使用
- 运维学python之爬虫基础篇(三)urllib模块高级用法