鱼C论坛

 找回密码
 立即注册
查看: 2287|回复: 2

[已解决]各位大佬帮帮忙

[复制链接]
发表于 2020-11-8 21:35:06 | 显示全部楼层 |阅读模式

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

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

x
  1. def file_reaplace(file_name,rep_word,new_word):
  2.     f_read = open(file_name,encoding='UTF-8')

  3.     content = []
  4.     count = 0

  5.     for eachline in f_read:
  6.         if rep_word in eachline:
  7.             count = eachline.count(rep_word)
  8.             eachline = eachline.replace(rep_word,new_word)
  9.         content.append(eachline)

  10.     decide = input('文件 %s 中共有 %s 个【 %s 】\n您确定要把所有的【 %s 】替换为【 %s 】吗?\n【Yes/No】:'% (f_read,count,rep_word,rep_word,new_word))

  11.     if decide in 'YesyesYES':
  12.         f_write = open(file_name,'w')
  13.         f_write.writelines(content)
  14.         f_write.close()

  15.     f_read.close()

  16. file_name = input('请输入文件名:')
  17. rep_word = input ('请输入需要替换的单词或字符:')
  18. new_word = input('请输入新的单词或字符:')
  19. file_reaplace(file_name,rep_word,new_word)
复制代码



各位大佬好,我按小甲鱼的程序写的,为什么还会报错?

Traceback (most recent call last):
  File "D:/pycharm/main.py", line 25, in <module>
    file_reaplace(file_name,rep_word,new_word)
  File "D:/pycharm/main.py", line 7, in file_reaplace
    for eachline in f_read:
  File "D:\python37\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 2: invalid start byte
最佳答案
2020-11-8 21:42:16


这是编码错误,是 open 函数打开文件时候解码和你 txt 文件编码不一致导致的

把你 open 参数那的 encoding = 'UTF-8' 去掉试试看,应该就可以正常运行了

如果还是不能正常运行,说明你文件夹中有两种编码不同 txt 的文件,但是 open 只设置了其中一种,导致另一种读取汉字字节不同而报错

建议这个时候重新创个文件夹,以及重新新建 txt 文件在文件夹中,用代码查找这个文件夹里面的 txt ,应该就能成功运行

想更改 txt 文本的编码可以在保存时候进行设置:


                               
登录/注册后可看大图




                               
登录/注册后可看大图




若选择 UTF-8 那么 open 参数中需要带上 encoding = 'utf-8' ,如果懒得加这个参数,你选择 ANSI 即可

国内大部分电脑的 ANSI 都是默认 GBK 编码 ,而 open 也是默认 gbk 读取的,所以可以直接进行解码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-8 21:42:16 | 显示全部楼层    本楼为最佳答案   


这是编码错误,是 open 函数打开文件时候解码和你 txt 文件编码不一致导致的

把你 open 参数那的 encoding = 'UTF-8' 去掉试试看,应该就可以正常运行了

如果还是不能正常运行,说明你文件夹中有两种编码不同 txt 的文件,但是 open 只设置了其中一种,导致另一种读取汉字字节不同而报错

建议这个时候重新创个文件夹,以及重新新建 txt 文件在文件夹中,用代码查找这个文件夹里面的 txt ,应该就能成功运行

想更改 txt 文本的编码可以在保存时候进行设置:


                               
登录/注册后可看大图




                               
登录/注册后可看大图




若选择 UTF-8 那么 open 参数中需要带上 encoding = 'utf-8' ,如果懒得加这个参数,你选择 ANSI 即可

国内大部分电脑的 ANSI 都是默认 GBK 编码 ,而 open 也是默认 gbk 读取的,所以可以直接进行解码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-8 21:44:12 | 显示全部楼层
       这一句
  1. def file_reaplace(file_name,rep_word,new_word):
  2.     f_read = open(file_name,encoding='UTF-8')
复制代码

       改成这样试试
  1. def file_reaplace(file_name,rep_word,new_word):
  2.     f_read = open(file_name)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 08:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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