qq1484730945 发表于 2020-7-16 18:45:08

为什么会这样呢?,怎么无法读取该TXT文本的数据呢

提示这个报错啥是什么问题,有的就要加这个编码格式,有的就不需要加,为啥会这样,是文件里面的内容问题吗?
,,,,,,好像是文件格式的问题,碰到这种不同的格式咋处理,,,,如果后边学到异常处理还好,,,按照小龟龟的课程目前到文件,还没学到处理异常,看来不行只能先丢一边了

_2_ 发表于 2020-7-16 18:48:49

本帖最后由 _2_ 于 2020-7-16 18:49 编辑

utf-8 改成 gbk
或者用 open() 默认的方式读取

Twilight6 发表于 2020-7-16 18:50:07



如果创建 txt 写入文件时候的编码和你 open 打开时候的编码不同,在读取中文字符时候就会报错,因为各种编码编写 汉字的字节都有所不同

比如 utf-8 汉字一般为 3 字节,而 gbk 汉字一般为 2 字节

当你读取文件时候 解码的编码和文本不一致,就会导致解码错误你可以通过下面的方法重写设置文件编码:

重新更改下文件编码:

第一步,打开笔记本另存为:
https://xxx.ilovefishc.com/forum/202005/25/072650zqq1fqqmng421bqz.jpg
第二步,设置编码,这里设置 utf-8 那么 open encoding 就要带上 utf-8:
https://xxx.ilovefishc.com/forum/202005/25/072647nvzjv2zemvgxet5g.jpg
这里也可以选择第一个 ,ANSI ,选这个的话就不用加 encoding = 'utf-8' 参数:
https://xxx.ilovefishc.com/forum/202006/22/222937li4vv400i6v44b6z.png


qq1484730945 发表于 2020-7-16 18:51:54

_2_ 发表于 2020-7-16 18:48
utf-8 改成 gbk
或者用 open() 默认的方式读取

,,,这我知道,我是想问如果改文件夹下有很多编码不一的,那处理起来用异常处理还是先判断文件编码类型再去进行不同的编码读取么?

qq1484730945 发表于 2020-7-16 18:53:45

Twilight6 发表于 2020-7-16 18:50
如果创建 txt 写入文件时候的编码和你 open 打开时候的编码不同,在读取中文字符时候就会报错,因为各 ...

我是想问如果该文件夹下有很多编码不一的情况下,那处理起来用异常处理还是先判断文件编码类型再去进行不同的编码读取么?比如该文件夹有六七个不一样的编码格式的TXT文本,想要读取里面内容啥的,是不是先判断该文件编码类型,或者异常处理??{:10_277:}看来先阶段只能先绕过这个了,学到后边在回过来来看看吧{:10_256:}{:10_256:}{:10_256:}

_2_ 发表于 2020-7-16 18:53:51

qq1484730945 发表于 2020-7-16 18:51
,,,这我知道,我是想问如果改文件夹下有很多编码不一的,那处理起来用异常处理还是先判断文件编码类型 ...

第一种是可行的(try-except 异常处理)
第二种需要深入学习(需要第三方库)

qq1484730945 发表于 2020-7-16 18:55:19

_2_ 发表于 2020-7-16 18:53
第一种是可行的(try-except 异常处理)
第二种需要深入学习(需要第三方库)

所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存的问题{:10_256:}{:10_256:}
第三方库可以判断该TXT文件编码类型吗?

_2_ 发表于 2020-7-16 18:56:54

qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...

没涉及过这部分
因为我平常很少读取编码文件,我用的都是二进制文件
我可以去查查,毕竟 Python 法力无边嘛{:10_256:}

Twilight6 发表于 2020-7-16 18:57:28

qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...


这个帖子看看吧,用 chardet 模块:

https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=173845&pid=4802541

import chardet

f = open(file_name,'rb')# 先用二进制打开
data = f.read()# 读取文件内容
file_encoding = chardet.detect(data).get('encoding')# 得到文件的编码格式
f.close()
print(file_encoding)

_2_ 发表于 2020-7-16 19:06:31

qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...

Python 有一个内置库 chardet 可以实现编码检测
import chardet as d
f = open("1.txt")
result = chardet.detect(f.read())
print(result)
会返回一个字典
第一个是文件编码
第二个是可信度(百分比)
第三个是语言
页: [1]
查看完整版本: 为什么会这样呢?,怎么无法读取该TXT文本的数据呢