python的编码判断_
python的编码判断_我要打开一批txt文本来进行文本处理,
可是,这批文本的编码不统一,
有的是uft8 有的是gbk 可能有的还是gb2312,
这样,我要怎么去不出错的打开这些文本呢?
下面是我的测试代码,不太成功,有知道的指导一下谢谢
try:
text0.decode('utf8')
except Exception as e:
if "unexpected end of data" in str(e):
file = open(text, encoding='utf-8')
elif "invalid start byte" in str(e):
file = open(text, encoding='gb2312')
elif "ascii" in str(e):
file = open(text, encoding='Unicode')
chardet
用 charder 模块中的detect 函数,读取文件二进制内容即可获取 txt 文本的编码格式
参考代码:
import chardet
file = open('Test.txt','rb')
data = file.read()
print(chardet.detect(data)['encoding']) Twilight6 发表于 2021-9-16 10:49
用 charder 模块中的detect 函数,读取文件二进制内容即可获取 txt 文本的编码格式
参考代码:
是的,我自己找到这个函数了,就是用这个,好用,谢谢 suchocolate 发表于 2021-9-15 22:11
chardet
nicodeDecodeError: 'gb2312' codec can't decode byte 0xdb in position 31777: illegal multibyte sequence 解码的时候会报这个错误 ,
用chardet也不能完美解决,
我现在想能不能这样,先用默认的方法读文本,如果 出错,就换编码,换成gb2312或者gbk,这个要怎么写出来,谢谢 Twilight6 发表于 2021-9-16 10:49
用 charder 模块中的detect 函数,读取文件二进制内容即可获取 txt 文本的编码格式
参考代码:
nicodeDecodeError: 'gb2312' codec can't decode byte 0xdb in position 31777: illegal multibyte sequence 解码的时候会报这个错误 ,
用chardet也不能完美解决,
我现在想能不能这样,先用默认的方法读文本,如果 出错,就换编码,换成gb2312或者gbk,这个要怎么写出来,谢谢 swanseabrian 发表于 2021-9-17 16:56
nicodeDecodeError: 'gb2312' codec can't decode byte 0xdb in position 31777: illegal multibyte sequ ...
try-except 捕获报错就行了吧
Twilight6 发表于 2021-9-17 17:12
try-except 捕获报错就行了吧
try:
text0.decode('utf8')
except Exception as e:
if "unexpected end of data" in str(e):
file = open(text, encoding='utf-8')
elif "invalid start byte" in str(e):
file = open(text, encoding='gb2312')
elif "ascii" in str(e):
file = open(text, encoding='Unicode')
类似这种?
页:
[1]