鱼C论坛

 找回密码
 立即注册
查看: 1210|回复: 6

[已解决]29讲课堂例子问题

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

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

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

x
f = open(r'D:\Program Files\1\record.txt')

boy = []
girl = []
count = 1

for each in f:
    if each[:6] != '======':
        (role, line) = each.split(':', 1)
        if role == '小甲鱼':
            boy.append(line)
        if role == '小客服':
            girl.append(line)
    else:
        file_name_boy = 'boy' + str(count) + '.txt'
        file_name_girl = 'girl' + str(count) + '.txt'
        boy_file = open(file_name_boy, 'w')
        girl_file = open(file_name_girl, 'w')
        boy_file.writelines(boy)
        girl_file.writelines(girl)
        boy_file.close()
        girl_file.close()

        boy = []
        girl = []
        count += 1

file_name_boy = 'boy' + str(count) + '.txt'
file_name_girl = 'girl' + str(count) + '.txt'
boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()

运行之后总是报错;
===================== RESTART: D:\Program Files\1\0826_1.py ====================
Traceback (most recent call last):
  File "D:\Program Files\1\0826_1.py", line 7, in <module>
    for each in f:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 25: illegal multibyte sequence
>>>
这是哪里出问题了?新手求解答
最佳答案
2020-8-26 20:16:57
open高数加一个参数
encoding=''utf-8''
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-26 20:16:57 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
open高数加一个参数
encoding=''utf-8''
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 20:28:29 | 显示全部楼层
昨非 发表于 2020-8-26 20:16
open高数加一个参数
encoding=''utf-8''

大佬,为什么当初小甲鱼的没有加这种编码格式就运行成功了,是版本问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 20:33:25 | 显示全部楼层
有可能是操作系统版本不一样吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 21:27:07 | 显示全部楼层
2087721266 发表于 2020-8-26 20:28
大佬,为什么当初小甲鱼的没有加这种编码格式就运行成功了,是版本问题吗?

因为python变了
  1. #定义切分函数   
  2. def spilt_file(file_name):
  3.         f = open(file_name,"r",encoding='UTF-8')
  4.            #关键点,编码方式
复制代码


亲测,就改个这就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-26 21:56:04 | 显示全部楼层
昨非 发表于 2020-8-26 21:27
因为python变了

亲测,就改个这就可以了

试过了可以,谢谢大佬
我做29讲课后习题
1. 编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置。

代码清单:
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
现在是直接open(file2)也能成功打开而这个定义切分函数就要open(file_name,"r",encoding='UTF-8')才可以成功运行,现在就是有点懵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-26 22:04:20 | 显示全部楼层
2087721266 发表于 2020-8-26 21:56
试过了可以,谢谢大佬
我做29讲课后习题
1. 编写一个程序,比较用户输入的两个文件,如果不同,显示出 ...

说不清楚,可能是因为两道题里txt文件的编码格式不同造成的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 06:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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