使用通用编码检测器(chardet)在Python中的文本文件中进行字符检测

发布于 2021-01-29 17:05:18

我试图在Python中使用通用编码检测器(chardet)来检测文本文件(“ infile”)中最可能的字符编码,并将其用于进一步处理。

尽管chardet主要用于检测网页的字符编码,但我发现了在单个文本文件中使用该字符的示例

但是,我不知道如何告诉脚本将最可能的字符编码设置为变量“ charenc”(在脚本中多次使用)。

基于上述示例和chardet自己的文档的组合,我的代码如下:

import chardet    
rawdata=open(infile,"r").read()
chardet.detect(rawdata)

脚本继续运行以下命令(以及几种类似的用法)时,必须进行字符检测:

inF=open(infile,"rb")
s=unicode(inF.read(),charenc)
inF.close()

任何帮助将不胜感激。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    chardet.detect()返回一个字典,该字典提供编码作为与键关联的值'encoding'。因此,您可以执行以下操作:

    import chardet    
    rawdata = open(infile, 'rb').read()
    result = chardet.detect(rawdata)
    charenc = result['encoding']
    

    chardet文档并未明确说明是否应将文本字符串和/或字节字符串与该模块一起使用,但是它的理由是,如果您有文本字符串,则不需要对其进行字符检测,因此您应该可能正在传递字节字符串。因此b,对的调用中的二进制模式标志()open()。但是chardet.detect()也可以根据文本字符串来使用,具体取决于您所使用的Python版本和所用的库版本,即,如果您确实忽略了b它,那么即使您在技术上做错了事情,也可能会发现它仍然可以工作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看