使用chardet模块获取文件的编码格式,进而正确的读取文件内容
Posted miyatest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用chardet模块获取文件的编码格式,进而正确的读取文件内容相关的知识,希望对你有一定的参考价值。
import chardet ‘‘‘ 不同的文件编写的时候,会有不同的编码格式,有的用utf-8进行的编码,有的呢用的是gbk进行的编码。 在我们读取文件的时候,我们实现并不知情这个当前读取的文件是用的什么编码方式进行的存储。所以就要用的chardet模块 chardet.detect(文件对象),在打开文件的时候,用rb或者wb进行打开。然后将文件对象通过chardet模块获取它当时编码的格式 然后获取文件的时候,decode解码的时候,通过decode(编码格式)进行解码,展现。 ‘‘‘ # f=open(‘test1.txt‘,‘w‘,encoding = ‘utf-8‘) # f.write(‘你好,我好大减价好‘) # f=open(‘test2.txt‘,‘w‘,encoding =‘gbk‘) # f.write(‘你好,我好大减价好‘) f=open(‘test2.txt‘,‘rb‘) #先通过二进制将文件打开 res= f.read() print(res) # b‘xc4xe3xbaxc3xa3xacxcexd2xbaxc3xb4xf3xbcxf5xbcxdbxbaxc3‘ tt =chardet.detect(res) #通过chardet模块,获取打开的文件对象是什么编码格式 print(tt) #{‘encoding‘: ‘GB2312‘, ‘confidence‘: 0.99, ‘language‘: ‘Chinese‘} #拿到编码格式后,将文件decode解码 print(res.decode(‘gbk‘)) #你好,我好大减价好
以上是关于使用chardet模块获取文件的编码格式,进而正确的读取文件内容的主要内容,如果未能解决你的问题,请参考以下文章
python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object