找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2689|回复: 8

[求助] 在用line.split 时出现错误。WHY,我可是按照标准文件打的。

1

主题

5

帖子

5

积分

贫民

积分
5
tianfu_chen 发表于 2017-12-11 15:49:21 | 显示全部楼层 |阅读模式
f=open("record.txt")  #打开文件
boy=[]
girl=[]
count=1
for each_lines in f:
    if each_lines[0:6]!="========":   #按=====分割成不同文件,将boy和girl说的话分别存储不同的列表
        role,line_spoken =each_lines.split(':',1) #以“:”分割.(这个位置出现错误,不懂)
        if role =="boy":
            boy.append(line_spoken)
        if role =="girl":
            girl.append(line_spoken)

    else:                                                   #将列表内容保存在不同文档里
         boy_name= "boy_"+ str(count) + ".txt"
         girl_name= "girl_"+ str(count) + ".txt"

         boy_file=open(boy_name,"w")
         girl_file=open(girl_name,"w")

         boy_file.writelines(boy)
         girl_file.writelines(girl)
         boy_file.close()
         girl_file.close()

         boy=[]
         girl=[]
         count+=1
         print(count)
f.close()
  ######################################################################   
结果:
Traceback (most recent call last):
  File "D:\Desktop\我的python\分页.py", line 7, in <module>
    role,line_spoken =each_lines.split(':',1)
ValueError: need more than 1 value to unpack
出现这样的错误,不知道错误在哪里。求大神帮助。跪谢。


回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-12-11 19:17:30 | 显示全部楼层
本帖最后由 uitb 于 2017-12-11 19:21 编辑

分割完是个列表,不知道有几个元素,你报错的信息貌似是元素的数量是1,跟赋值号前面的变量(role,line_spoken)数量上对不上
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-12 08:32:58 | 显示全部楼层
row =each_lines.split(':',1)
role,line_spoken = row[0], ':'.join(row[1:])我猜你是这个意思吧
如果你的each_lines是这样的'boy:12314:1232'那么你的程序就会报错,因为你只给了两个参数,而返回值是三个参数
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
tianfu_chen  楼主| 发表于 2017-12-15 09:53:05 | 显示全部楼层
剑心无痕 发表于 2017-12-12 08:32
row =each_lines.split(':',1)
role,line_spoken = row[0], ':'.join(row[1:])我猜你是这个意思吧
如果你 ...

each_line.split(":",1)不是把字符串按“:”分割两段吗。如你所述:
list应该是['boy','12314:1232']。
不知道我的理解正不正确?
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-15 10:24:29 | 显示全部楼层
tianfu_chen 发表于 2017-12-15 09:53
each_line.split(":",1)不是把字符串按“:”分割两段吗。如你所述:
list应该是['boy','12314:1232']。
...

哦,是我理解错了,可能你的数据each_lines = 'boyabc' , 然后each_line.split(":",1)后只有一个参数,就会报错,在split之前把each_lines打印出来就可以了
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
tianfu_chen  楼主| 发表于 2017-12-15 11:10:34 | 显示全部楼层
剑心无痕 发表于 2017-12-15 10:24
哦,是我理解错了,可能你的数据each_lines = 'boyabc' , 然后each_line.split(":",1)后只有一个参数,就 ...

boy:萨芬撒拉科技飞洒
girl:飞洒地方撒
boy:飞洒地方撒
girl:撒旦飞洒
boy:发的
girl:飞洒飞洒地方撒
boy:方法司法所
=============================================
girl:发的啊分
boy:发生发
girl:法法
boy:fdsal;kfjdsal
girl:法法师
boy:发啊发
girl:发发的撒
boy: 发送到发的
girl:发的萨芬
boy:根深蒂固防辐射的
girl:爱是个打法
boy:啥地方古代诗歌
girl:沟道上反攻倒算
=========================================================
boy:反倒是感受到
girl:沟道上割发代首
boy: 沟道上反攻倒算苟富贵
girl:割发代首割发代首
boy:范德萨范德萨发
girl:发的萨芬撒发大水
boy:发发斯蒂芬
girl:发发地方
boy:放豆腐哥
girl:发的萨芬
boy:放散阀申达股份
girl:飞洒国防法规


这是我要打开的文件,里面的内容检查过,没有错误。同时“:”英中文输入。我也排查了一遍。就是找不出来错误。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
tianfu_chen  楼主| 发表于 2017-12-15 11:22:03 | 显示全部楼层
剑心无痕 发表于 2017-12-15 10:24
哦,是我理解错了,可能你的数据each_lines = 'boyabc' , 然后each_line.split(":",1)后只有一个参数,就 ...

thanks。我找到问题点所在了。主要原因是
if each_lines[0:6]!="========":
这句多打了等号。
导致识别不出分“==============”这一行,从而将这句按照“:”来分割。导致错误。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

5

积分

贫民

积分
5
tianfu_chen  楼主| 发表于 2017-12-15 11:23:26 | 显示全部楼层
uitb 发表于 2017-12-11 19:17
分割完是个列表,不知道有几个元素,你报错的信息貌似是元素的数量是1,跟赋值号前面的变量(role,line_spo ...

受教了,非常感谢。错误已经找到了
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2017-12-15 11:24:01 | 显示全部楼层
tianfu_chen 发表于 2017-12-15 11:10
boy:萨芬撒拉科技飞洒
girl:飞洒地方撒
boy:飞洒地方撒

print(each_lines) # 在下面的句子前打印,直到报错,最后一条数据就是报错数据
role,line_spoken =each_lines.split(':',1)
回复 支持 反对

使用道具 举报

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

本版积分规则

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