swanseabrian 发表于 2021-9-15 09:56:39

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')

suchocolate 发表于 2021-9-15 22:11:42

chardet

Twilight6 发表于 2021-9-16 10:49:03


用 charder 模块中的detect 函数,读取文件二进制内容即可获取 txt 文本的编码格式

参考代码:

import chardet

file = open('Test.txt','rb')
data = file.read()

print(chardet.detect(data)['encoding'])

swanseabrian 发表于 2021-9-16 15:29:34

Twilight6 发表于 2021-9-16 10:49
用 charder 模块中的detect 函数,读取文件二进制内容即可获取 txt 文本的编码格式

参考代码:

是的,我自己找到这个函数了,就是用这个,好用,谢谢

swanseabrian 发表于 2021-9-17 16:56:00

suchocolate 发表于 2021-9-15 22:11
chardet

nicodeDecodeError: 'gb2312' codec can't decode byte 0xdb in position 31777: illegal multibyte sequence 解码的时候会报这个错误 ,
用chardet也不能完美解决,
我现在想能不能这样,先用默认的方法读文本,如果 出错,就换编码,换成gb2312或者gbk,这个要怎么写出来,谢谢

swanseabrian 发表于 2021-9-17 16:56:51

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,这个要怎么写出来,谢谢

Twilight6 发表于 2021-9-17 17:12:41

swanseabrian 发表于 2021-9-17 16:56
nicodeDecodeError: 'gb2312' codec can't decode byte 0xdb in position 31777: illegal multibyte sequ ...


try-except 捕获报错就行了吧

swanseabrian 发表于 2021-9-17 18:36:22

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]
查看完整版本: python的编码判断_