吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2371|回复: 26
收起左侧

[求助] 初学python,处理ansi编码文本文件失败,望高手指点一二,谢谢!

[复制链接]
冷风中的一把刀 发表于 2020-5-28 19:58
初学python,写了一段非常简单的代码,处理txt文本文件,找出关键词所在的段并显示,可运行出错。
首先我尝试打开ansi编码的txt文本文件,代码如下:
[Asm] 纯文本查看 复制代码
f = open('h:/无限恐怖.txt','r')
i=0
p = f.readlines()
for s in p:
    if '大势' in s:
        i = i+1
        print(i,s)
f.close()

代码运行出错:
Traceback (most recent call last):
  File "E:/python实验室/查询文本文件关键字.py", line 17, in <module>
    p = f.readlines()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa1 in position 2566: illegal multibyte sequence

于是我用记事本将该txt文本文件另存为utf-8编码的文件,并编写如下代码:
[Asm] 纯文本查看 复制代码
f = open('h:/书/人物/无限恐怖.txt','r',encoding='utf-8')
i=0
p = f.readlines()
for s in p:
    if '大势' in s:
        i = i+1
        print(i,s)
f.close()

程序能够得到正确的结果。

我也试过用加encoding='utf-8'的方式尝试打开处理ansi编码的文件,但是失败。到底该如何解码呢?报错信息提示解码失败。

python的版本是3.8.3

我该怎样直接运行程序直接处理ansi编码的文本文件呢?如果只是用记事本打开再另存为的话,有点太麻烦了。
希望哪位高手指点一二,十分感谢。


出错信息

出错信息

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ligxi 发表于 2020-5-28 20:03
他应该是说,请你用gbk方式打开,因为在微软系统中ansi编码就是指gbk:
f1=open('h:/无限恐怖.txt','r',encoding='gbk')

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ymhld + 1 + 1 热心回复!

查看全部评分

 楼主| 冷风中的一把刀 发表于 2020-5-28 20:07
ligxi 发表于 2020-5-28 20:03
他应该是说,请你用gbk方式打开,因为在微软系统中ansi编码就是指gbk:
f1=open('h:/无限恐怖.txt','r',en ...

谢谢回复。但是我试了下,还是报错
Traceback (most recent call last):
  File "E:\python实验室\查询文本文件关键字.py", line 17, in <module>
    p = f.readlines()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa1 in position 2566: illegal multibyte sequence
fanvalen 发表于 2020-5-28 20:10
先用GBK打开,再encode("utf-8")
统一编码了就好整
 楼主| 冷风中的一把刀 发表于 2020-5-28 20:12
fanvalen 发表于 2020-5-28 20:10
先用GBK打开,再encode("utf-8")
统一编码了就好整

小弟不懂,这么复杂吗?怎样操作呢?望指点
ligxi 发表于 2020-5-28 20:15
冷风中的一把刀 发表于 2020-5-28 20:07
谢谢回复。但是我试了下,还是报错
Traceback (most recent call last):
  File "E:\python实验室\ ...

方便把你的文件发上来吗?你不会是把已经转成utf-8的文件用gbk方式打开的吧?还是说把gbk的文件用utf-8打开?
两者的编码方式是完全不同的,一个中文占2位,一个中文占3位。
两者肯定是不能互相打开的。gbk的文件就一定要用gbk编码打开,utf-8编码就一定要用utf-8编码打开。
黄河大鲤鱼 发表于 2020-5-28 20:15
import codecs #打开ANSI格式的文档,需要codecs库
txt='1.txt' #这个文档就是ANSI格式的
file = open('1.txt,'r',encoding='gb2312')  as f:#codecs打开文档,encoding是gb2312,不是ANSI
fanvalen 发表于 2020-5-28 20:15
[Python] 纯文本查看 复制代码
f = open('h:/书/人物/无限恐怖.txt','r',encoding='gbk')
i=0
p = f.read().splitlines()
p.encode("utf-8")
for s in p:
    if '大势' in s:
        i = i+1
        print(i,s)
f.close()
 楼主| 冷风中的一把刀 发表于 2020-5-28 20:22
ligxi 发表于 2020-5-28 20:15
方便把你的文件发上来吗?你不会是把已经转成utf-8的文件用gbk方式打开的吧?还是说把gbk的文件用utf-8打 ...

嗯,编码格式确认过了老哥。这个玩意发出来不会违规吧,
 楼主| 冷风中的一把刀 发表于 2020-5-28 20:23
fanvalen 发表于 2020-5-28 20:15
[mw_shl_code=python,true]f = open('h:/书/人物/无限恐怖.txt','r',encoding='gbk')
i=0
p = f.read().s ...

我运行了下,还是报错。没道理
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 15:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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