木川 *_* 炎星 19 python character-encoding
我试图在Python中使用通用编码检测器(chardet)来检测文本文件('infile')中最可能的字符编码,并在进一步处理中使用它.
虽然chardet主要用于检测网页的字符编码,但我找到了一个用于单个文本文件的示例.
但是,我无法弄清楚如何告诉脚本将最可能的字符编码设置为变量'charenc'(在整个脚本中多次使用).
我的代码基于上述示例和chardet自己的文档的组合,如下所示:
import chardet
rawdata=open(infile,"r").read()
chardet.detect(rawdata)
Run Code Online (Sandbox Code Playgroud)
当脚本继续运行以下(以及几个类似的用途)时,字符检测是必要的:
inF=open(infile,"rb")
s=unicode(inF.read(),charenc)
inF.close()
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
Dav*_*d Z 46
chardet.detect()返回一个字典,该字典提供编码作为与密钥关联的值'encoding'.所以你可以这样做:
import chardet
rawdata = open(infile, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
Run Code Online (Sandbox Code Playgroud)
该chardet文件是不是文本字符串和/或字节的字符串是否应该与模块的工作明确清晰,但按理说,如果你有一个文本字符串,你不需要在它上面运行字符检测,所以你应该可能是传递字节字符串.因此b调用中的二进制模式flag()open().但chardet.detect()也可能使用文本字符串,具体取决于您使用的Python版本和库,即如果您省略了b,即使您在技术上做错了,也可能发现它仍然有效.
| 归档时间: |
|
| 查看次数: |
27203 次 |
| 最近记录: |