鱼C论坛

 找回密码
 立即注册
查看: 1666|回复: 9

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

[复制链接]
发表于 2020-7-16 18:45:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
提示这个报错啥是什么问题,有的就要加这个编码格式,有的就不需要加,为啥会这样,是文件里面的内容问题吗?
,,,,,,好像是文件格式的问题,碰到这种不同的格式咋处理,,,,如果后边学到异常处理还好,,,按照小龟龟的课程目前到文件,还没学到处理异常,看来不行只能先丢一边了
最佳答案
2020-7-16 18:57:28
qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...



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

https://fishc.com.cn/forum.php?m ... 845&pid=4802541

import chardet

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


1.png
2.png
3.png
4.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 18:48:49 From FishC Mobile | 显示全部楼层
本帖最后由 _2_ 于 2020-7-16 18:49 编辑

utf-8 改成 gbk
或者用 open() 默认的方式读取
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-16 18:50:07 | 显示全部楼层


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

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

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

重新更改下文件编码:

第一步,打开笔记本另存为:

                               
登录/注册后可看大图

第二步,设置编码,这里设置 utf-8 那么 open encoding 就要带上 utf-8:

                               
登录/注册后可看大图

这里也可以选择第一个 ,ANSI ,选这个的话就不用加 encoding = 'utf-8' 参数:

                               
登录/注册后可看大图



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 18:51:54 | 显示全部楼层
_2_ 发表于 2020-7-16 18:48
utf-8 改成 gbk
或者用 open() 默认的方式读取

,,,这我知道,我是想问如果改文件夹下有很多编码不一的,那处理起来用异常处理还是先判断文件编码类型再去进行不同的编码读取么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我是想问如果该文件夹下有很多编码不一的情况下,那处理起来用异常处理还是先判断文件编码类型再去进行不同的编码读取么?比如该文件夹有六七个不一样的编码格式的TXT文本,想要读取里面内容啥的,是不是先判断该文件编码类型,或者异常处理??看来先阶段只能先绕过这个了,学到后边在回过来来看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

第一种是可行的(try-except 异常处理)
第二种需要深入学习(需要第三方库)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-16 18:55:19 | 显示全部楼层
_2_ 发表于 2020-7-16 18:53
第一种是可行的(try-except 异常处理)
第二种需要深入学习(需要第三方库)

所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存的问题
第三方库可以判断该TXT文件编码类型吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

没涉及过这部分
因为我平常很少读取编码文件,我用的都是二进制文件
我可以去查查,毕竟 Python 法力无边嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-16 18:57:28 | 显示全部楼层    本楼为最佳答案   
qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...



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

https://fishc.com.cn/forum.php?m ... 845&pid=4802541

import chardet

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-16 19:06:31 From FishC Mobile | 显示全部楼层
qq1484730945 发表于 2020-7-16 18:55
所跌死捏。现阶段在做小龟龟文件哪里的作业,那我先不管这文件先,估计我那时候写入的时候没注意格式保存 ...

Python 有一个内置库 chardet 可以实现编码检测
import chardet as d
f = open("1.txt")
result = chardet.detect(f.read())
print(result)
会返回一个字典
第一个是文件编码
第二个是可信度(百分比)
第三个是语言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表