鱼C论坛

 找回密码
 立即注册
查看: 2718|回复: 8

大神帮忙看一下为啥我参照031讲的复制代码一直报错

[复制链接]
发表于 2020-2-28 19:28:16 | 显示全部楼层 |阅读模式

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

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

x

#-*- coding : utf-8 -*-
# coding: utf-8

import pickle

def save_file(boy, girl, count):
    file_name_boy = 'boy_' + str(count) + '.txt'
    file_name_girl = 'girl_' + str(count) + '.txt'

    boy_file = open(file_name_boy, 'wb')#, encoding='gbk') # 记得一定要加 b 吖
    girl_file = open(file_name_girl, 'wb')#, encoding='gbk') # 记得一定要加 b 吖

    pickle.dump(boy, boy_file)
    pickle.dump(girl, girl_file)

    boy_file.close()
    girl_file.close()

def split_file(file_name):
    count = 1
    boy = []
    girl = []

    f = open(file_name)

    for each_line in f:
        if each_line[:6] != '======':
            (role, line_spoken) = each_line.split(':', 1)
            if role == '小甲鱼':
                boy.append(line_spoken)
            if role == '小客服':
                girl.append(line_spoken)
        else:
            save_file(boy, girl, count)

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

    save_file(boy, girl, count)
    f.close()

split_file('record.txt')


报错类型是如下:
Traceback (most recent call last):
  File "xjy032.py", line 44, in <module>
    split_file('record.txt')
  File "xjy032.py", line 27, in split_file
    for each_line in f:
  File "/Users/lamenta/anaconda3/lib/python3.7/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
我在网上搜索了几种解决方案 都不行,还麻烦大神帮我看看 ,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-28 19:33:38 | 显示全部楼层
你试一下不同的python版本,我用python3.7 运行没有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 19:35:16 | 显示全部楼层
record.txt 文件编码问题,简单的处理办法就是新建个.txt然后把内容复制过去保存
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 20:14:17 | 显示全部楼层
为什么要加b呢,是文本文件呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 20:16:15 | 显示全部楼层
冬雪雪冬 发表于 2020-2-28 20:14
为什么要加b呢,是文本文件呀

小甲鱼就这么写的诶 加b是因为是二进制读取吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 20:16:55 | 显示全部楼层
ouyunfu 发表于 2020-2-28 19:33
你试一下不同的python版本,我用python3.7 运行没有问题

我的就是python3.7诶   不过还是谢谢你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 20:17:25 | 显示全部楼层
ba21 发表于 2020-2-28 19:35
record.txt 文件编码问题,简单的处理办法就是新建个.txt然后把内容复制过去保存

好嘞!谢谢,我试一试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 20:42:13 | 显示全部楼层
Lamenta 发表于 2020-2-28 20:16
小甲鱼就这么写的诶 加b是因为是二进制读取吧

哦,如果用pickle,就wb
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 11:33:19 | 显示全部楼层
UnicodeDecodeError
解码错误,你之前boy和girl的文件,encoding是gbk,而后你读取文件用的解码方式默认是utf-8,编码方式不一样了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-23 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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