鱼C论坛

 找回密码
 立即注册
查看: 1846|回复: 10

[已解决]零基础学习python课时29

[复制链接]
发表于 2017-9-18 13:51:27 | 显示全部楼层 |阅读模式

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

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

x
这是我写的代码:
f = open('record.txt')


boy = []
girl = []
count = 1


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:
        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

f.close()


然后执行后有错误!

错误是:
Traceback (most recent call last):
  File "C:\Users\dell\Documents\test_1.py", line 11, in <module>
    (role,line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)


学霸看看这是咋回事!
最佳答案
2017-9-20 11:04:13
本帖最后由 醉酒青牛 于 2017-9-20 11:08 编辑
枫丹白露666 发表于 2017-9-19 12:47
我刚刚试过了,还是不对    而且出错原因还是ValueError: not enough values to unpack (expected 2, got ...

这是我写的代码,经测试无误。如果你还是找不到原因,你的代码可以放上来,我帮你调试一下。
f = open('record.txt','rt')    #以只读方式打开record.txt文档
boy = []                         #存放小甲鱼的内容
girl = []                        #存放小客服的内容
count = 1                       #计数一共多少段内容
for each_line in f:              #读取文档内每一行字符串 
    if each_line[:5] != '=====':   #当提取字符串内容的前5个字符不等于'=====',分割字符串并保存到对应列表内
        (role,line_spoken) = each_line.split(':',1)
        if role == '小甲鱼':
            boy.append(line_spoken)
        else:                       
            girl.append(line_spoken)
    else:                             #相等则将当前列表内的内容保存到相应文件内
        file_boy_name = '%s%c%d.txt' %('小甲鱼','_',count)
        file_girl_name = '%s%c%d.txt' %('小客服','_',count)
        f1 = open(file_boy_name,'xt')
        f1.writelines(boy)
        f2 = open(file_girl_name,'xt')
        f2.writelines(girl)
        boy = []
        girl = []
        f1.close()
        f2.close()
        count += 1
file_boy_name = '%s%c%d.txt' %('小甲鱼','-',count) #将第三段内容保存到各自文档内
file_girl_name = '%s%c%d.txt' %('小客服','-',count)
f1 = open(file_boy_name,'xt')
f1.writelines(boy)
f2 = open(file_girl_name,'xt')
f2.writelines(girl)
boy = []
girl = []
f1.close()
f2.close()
f.close()                   #关闭刚开始打开的record.txt文件      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-18 14:23:17 | 显示全部楼层
把1改为2试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-18 14:40:37 | 显示全部楼层
本帖最后由 醉酒青牛 于 2017-9-18 17:43 编辑

错在了中英文符号上了。文档中的每一行对话中,名字和所说话之间的冒号“:”是中文的冒号,所以在each_line.split(':',1)中的分割字符应该用中文冒号':',你用的是英文冒号':'。因此分割字符串时无法分割为两个字符串,导致出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-19 12:47:47 | 显示全部楼层
醉酒青牛 发表于 2017-9-18 14:40
错在了中英文符号上了。文档中的每一行对话中,名字和所说话之间的冒号“:”是中文的冒号,所以在each_lin ...

我刚刚试过了,还是不对    而且出错原因还是ValueError: not enough values to unpack (expected 2, got 1)


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

使用道具 举报

发表于 2017-9-20 11:04:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 醉酒青牛 于 2017-9-20 11:08 编辑
枫丹白露666 发表于 2017-9-19 12:47
我刚刚试过了,还是不对    而且出错原因还是ValueError: not enough values to unpack (expected 2, got ...

这是我写的代码,经测试无误。如果你还是找不到原因,你的代码可以放上来,我帮你调试一下。
f = open('record.txt','rt')    #以只读方式打开record.txt文档
boy = []                         #存放小甲鱼的内容
girl = []                        #存放小客服的内容
count = 1                       #计数一共多少段内容
for each_line in f:              #读取文档内每一行字符串 
    if each_line[:5] != '=====':   #当提取字符串内容的前5个字符不等于'=====',分割字符串并保存到对应列表内
        (role,line_spoken) = each_line.split(':',1)
        if role == '小甲鱼':
            boy.append(line_spoken)
        else:                       
            girl.append(line_spoken)
    else:                             #相等则将当前列表内的内容保存到相应文件内
        file_boy_name = '%s%c%d.txt' %('小甲鱼','_',count)
        file_girl_name = '%s%c%d.txt' %('小客服','_',count)
        f1 = open(file_boy_name,'xt')
        f1.writelines(boy)
        f2 = open(file_girl_name,'xt')
        f2.writelines(girl)
        boy = []
        girl = []
        f1.close()
        f2.close()
        count += 1
file_boy_name = '%s%c%d.txt' %('小甲鱼','-',count) #将第三段内容保存到各自文档内
file_girl_name = '%s%c%d.txt' %('小客服','-',count)
f1 = open(file_boy_name,'xt')
f1.writelines(boy)
f2 = open(file_girl_name,'xt')
f2.writelines(girl)
boy = []
girl = []
f1.close()
f2.close()
f.close()                   #关闭刚开始打开的record.txt文件      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 11:09:42 | 显示全部楼层
枫丹白露666 发表于 2017-9-19 12:47
我刚刚试过了,还是不对    而且出错原因还是ValueError: not enough values to unpack (expected 2, got ...

你用我写的这一行替换掉你代码里的对应行,看看。
(role,line_spoken) = each_line.split(':',1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-26 13:13:15 | 显示全部楼层
醉酒青牛 发表于 2017-9-20 11:04
这是我写的代码,经测试无误。如果你还是找不到原因,你的代码可以放上来,我帮你调试一下。


对不起,我们宿舍楼装网线,所以一个星期没网,我刚刚看过了。

以下是小甲鱼老师视频里的代码,我看着输入的,可就是执行错误!
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,'w')
    girl_file = open(file_name_girl,'w')
   
    boy_file.writelines(boy)
    girl_file.writelines(girl)


    boy_file.close()
    girl_file.close()
   
def split_file(file_name):
    f = open('record.txt')


    boy = []
    girl = []
    count = 1


    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')

麻烦帮我调试一下!

顺便问一下:file_name_boy和file_boy_name有什么不一样?

我还是不知道错哪?

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

使用道具 举报

 楼主| 发表于 2017-9-26 13:19:17 | 显示全部楼层
醉酒青牛 发表于 2017-9-20 11:04
这是我写的代码,经测试无误。如果你还是找不到原因,你的代码可以放上来,我帮你调试一下。

我刚刚把你的代码输入进去后还是显示错误!

是不是我电脑的问题


Traceback (most recent call last):
  File "C:/小甲鱼/88888888888888888888888888888888888888.py", line 7, in <module>
    (role,line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)
这个是显示的错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-26 13:20:03 | 显示全部楼层
醉酒青牛 发表于 2017-9-20 11:04
这是我写的代码,经测试无误。如果你还是找不到原因,你的代码可以放上来,我帮你调试一下。

我刚刚把你的代码输入进去后还是显示错误!

是不是我电脑的问题


Traceback (most recent call last):
  File "C:/小甲鱼/88888888888888888888888888888888888888.py", line 7, in <module>
    (role,line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)
这个是显示的错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-26 15:24:49 | 显示全部楼层
枫丹白露666 发表于 2017-9-26 13:13
对不起,我们宿舍楼装网线,所以一个星期没网,我刚刚看过了。

以下是小甲鱼老师视频里的代码,我看 ...

record.txt文档最后一行是不是有一个回车行?
有的话,你给他删掉再重新保存一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-27 13:25:15 | 显示全部楼层
醉酒青牛 发表于 2017-9-26 15:24
record.txt文档最后一行是不是有一个回车行?
有的话,你给他删掉再重新保存一下。

刚刚试了,还是不对,

再麻烦看看,谢谢你,
都好几天了我就是不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 16:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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