Python-模块和包.运维开发中chartdet编码检测的最佳实践

本文介绍了如何使用Python的chardet模块来检测文件或字符串的编码类型,并将其转换为UTF-8编码。通过实际代码示例展示了如何读取文件并逐行检测编码,适用于处理来自不同系统的文本文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍:

说明: 此模块主要用来实现字符串/文件编码检测

 

快速安装:

1

pip install --upgrade chardet

 

常用方法:

1

chardet.detect(aBuf) -> dict

说明: 检测字符串编码,返回一个字典包含confidence编码匹配准确率,encoding最终检测的编码,当aBuf为空时可能encoding为None,所以最好判断一下

 

最佳实践:

1. FirmwareUpload会自动对接OA系统及对应SVN服务器,自动定期读取最新OA发布的固件程序及ReleaseNote,但ReleaseNote中间可能由OA流经不同的部门被修改,无法区别同步下来的编码,由于最终会读取ReleaseNote文件生成对应的目录结构自动发布到UpgradeServer,所以希望可以准确识别编码统一转换为utf-8编码?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#!/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

 

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

 

本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1875749

转载于:https://my.oschina.net/learnbo/blog/843378

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值