使用通用编码检测器(chardet)在Python中的文本文件中进行字符检测
我试图在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()
任何帮助将不胜感激。
-
chardet.detect()
返回一个字典,该字典提供编码作为与键关联的值'encoding'
。因此,您可以执行以下操作:import chardet rawdata = open(infile, 'rb').read() result = chardet.detect(rawdata) charenc = result['encoding']
该
chardet
文档并未明确说明是否应将文本字符串和/或字节字符串与该模块一起使用,但是它的理由是,如果您有文本字符串,则不需要对其进行字符检测,因此您应该可能正在传递字节字符串。因此b
,对的调用中的二进制模式标志()open()
。但是chardet.detect()
也可以根据文本字符串来使用,具体取决于您所使用的Python版本和所用的库版本,即,如果您确实忽略了b
它,那么即使您在技术上做错了事情,也可能会发现它仍然可以工作。