python3.7 编译报错ValueError: not enough values to unpack (expected 2, got 1)

python做一个小任务,出现一个编译错误,以此记录。

**任务: 将文件(test.txt)中的数据进行分割并按照以下规律保存起来: -小甲鱼的对话单独保存为boy_ .txt的文件(去掉小甲鱼:”) -小客服的对话单独保存为girl_ .txt的文件(去掉小客服:”) -文件中总共有三段对话,分别保存为boy_ 1.txt,girl_ 1.txt,boy_ 2.txt, ,girl_ 2.txt, boy_ 3.txt, gril_ 3.txt共6个文件 (提示:文件中不同的对话间已经使用“========:”分割)

源代码:

f = open('D:\\pythondata\\test.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

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

f.close()

执行编译结果:程序要求将读取的每行以 : 为界分为两部分,如果找不到 : 就会报错。
在这里插入图片描述
报错的可能原因:
1、test.txt文件中将 :误写成中文冒号了。
2、test.txt文件中有序列中没有

(比如第一句,第二句)
在这里插入图片比如描述
解决方法:
1、讲文档中的冒号修改成英文冒号,保存即可。
2、在序列中加入冒号,保存。

执行成功图示:
在这里插入图片描述

优化程序:

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('D:\\pythondata\\test.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('test.txt')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值