鱼C论坛

 找回密码
 立即注册
查看: 811|回复: 5

[已解决]新人求助,《零基础学习python》中8.1.6的问题

[复制链接]
发表于 2022-1-7 12:36:03 | 显示全部楼层 |阅读模式

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

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

x
你好!这个问题你是怎么解决的?
为啥我的不行啊!
count=1
boy=[]
girl=[]

f=open(r'C:\Users\****\Desktop\record.txt','r',encoding='utf=8')
for each_lines in f:
    if each_lines[:6] != '======':
        (role,line_spoken)=each_lines.split(':',1)
        if role=='小客服:':
            girl.append(line_spoken)
        if role=='小甲鱼:':
            boy.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', encoding='utf=8')
        girl_file = open(file_name_girl, 'w', encoding='utf=8')
        boy_file.writelines(girl)
        girl_file.writelines(boy)
        boy=[]
        girl=[]
        count+=1
file_name_boy='boy'+str(count)+'.txt'
file_name_girl = 'girl' + str(count) + '.txt'
boy_file = open((r'C:\Users\****\Desktop\%s'%file_name_boy), 'w', encoding='utf=8')
girl_file = open((r'C:\Users\****\Desktop\%s'%file_name_girl), 'w', encoding='utf=8')
boy_file.writelines(boy)
girl_file.writelines(girl)

boy_file.close()
girl_file.close()
f.close()
提示的错误类型是:
Traceback (most recent call last):
  File "C:/PYTHON/20220107/python07.05.py", line 8, in <module>
    (role,line_spoken)=each_lines.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)

Process finished with exit code 1
也就是这行代码有问题:
for each_lines in f:
    if each_lines[:6] != '======':
        (role,line_spoken)=each_lines.split(':',1)
        if role=='小客服:':

原文件:
小客服:小甲鱼,有个好评很好笑哈。
========
小甲鱼:哦?
========
小客服:“有了小甲鱼,以后妈妈再也不用担心我的学习了~”
========
小甲鱼:看到了丫,我还发微博了呢~
========
小客服:嗯嗯,我看到了你的微博~
========
小甲鱼:哟西~
========
小客服:哪里不会点哪里··~~
========
最佳答案
2022-1-7 12:50:48
        运行这个代码就可以帮助你直接找出原因
  1. count=1
  2. boy=[]
  3. girl=[]

  4. f=open(r'C:\Users\****\Desktop\record.txt','r',encoding='utf=8')
  5. for each_lines in f:
  6.     if each_lines[:6] != '======':
  7.         try:
  8.             (role,line_spoken)=each_lines.split(':',1)
  9.             if role=='小客服:':
  10.                 girl.append(line_spoken)
  11.             if role=='小甲鱼:':
  12.                 boy.append(line_spoken)
  13.         except Exception as e:
  14.             print(each_lines)
  15.             print(e)
  16.     else:
  17.         file_name_boy='boy'+str(count)+'.txt'
  18.         file_name_girl = 'girl' + str(count) + '.txt'
  19.         boy_file = open(file_name_boy, 'w', encoding='utf=8')
  20.         girl_file = open(file_name_girl, 'w', encoding='utf=8')
  21.         boy_file.writelines(girl)
  22.         girl_file.writelines(boy)
  23.         boy=[]
  24.         girl=[]
  25.         count+=1
  26. file_name_boy='boy'+str(count)+'.txt'
  27. file_name_girl = 'girl' + str(count) + '.txt'
  28. boy_file = open((r'C:\Users\****\Desktop\%s'%file_name_boy), 'w', encoding='utf=8')
  29. girl_file = open((r'C:\Users\****\Desktop\%s'%file_name_girl), 'w', encoding='utf=8')
  30. boy_file.writelines(boy)
  31. girl_file.writelines(girl)

  32. boy_file.close()
  33. girl_file.close()
  34. f.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-7 12:50:48 | 显示全部楼层    本楼为最佳答案   
        运行这个代码就可以帮助你直接找出原因
  1. count=1
  2. boy=[]
  3. girl=[]

  4. f=open(r'C:\Users\****\Desktop\record.txt','r',encoding='utf=8')
  5. for each_lines in f:
  6.     if each_lines[:6] != '======':
  7.         try:
  8.             (role,line_spoken)=each_lines.split(':',1)
  9.             if role=='小客服:':
  10.                 girl.append(line_spoken)
  11.             if role=='小甲鱼:':
  12.                 boy.append(line_spoken)
  13.         except Exception as e:
  14.             print(each_lines)
  15.             print(e)
  16.     else:
  17.         file_name_boy='boy'+str(count)+'.txt'
  18.         file_name_girl = 'girl' + str(count) + '.txt'
  19.         boy_file = open(file_name_boy, 'w', encoding='utf=8')
  20.         girl_file = open(file_name_girl, 'w', encoding='utf=8')
  21.         boy_file.writelines(girl)
  22.         girl_file.writelines(boy)
  23.         boy=[]
  24.         girl=[]
  25.         count+=1
  26. file_name_boy='boy'+str(count)+'.txt'
  27. file_name_girl = 'girl' + str(count) + '.txt'
  28. boy_file = open((r'C:\Users\****\Desktop\%s'%file_name_boy), 'w', encoding='utf=8')
  29. girl_file = open((r'C:\Users\****\Desktop\%s'%file_name_girl), 'w', encoding='utf=8')
  30. boy_file.writelines(boy)
  31. girl_file.writelines(girl)

  32. boy_file.close()
  33. girl_file.close()
  34. f.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-7 12:51:00 | 显示全部楼层
因为文件中的是中文的冒号 【:】
你的代码是英文的冒号 【:】
改一下就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-7 14:01:44 | 显示全部楼层
谢谢回复!按你的建议我把所有的冒号都改成了统一的格式,也按你修改后的程序代码,编译了一下:
现在是程序不报错,但是分别生成boy1.txt,boy2.txt,boy3.txt,boy4.txt ,boy5.txt,boy6.txt,boy7.txt,boy8.txt和girl1.txt,girl2.txt,girl3.txt,girl4.txt,girl5.txt,girl6.txt,girl7.txt,girl8.txt 文件,
但问题是这些文件都是空文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-7 15:08:23 | 显示全部楼层
你这代码我看了有点乱呀,for循环后面的是在一起吗,看起来缩进不一样耶
我就说一下for循环里面的,你的else中打开两个文件。一个是boy一个girl,
按照你提供的文本看来,程序先读取保留小甲鱼说的话。读取下一行执行了else,那么只有girl文件有内容,boyl没有,后面的也是如此
按理说应该是一个有一个没有的
  1. for each_lines in f:
  2.     if each_lines[:6] != '======':
  3.         (role,line_spoken)=each_lines.split(':',1)
  4.         if role=='小客服:':
  5.             girl.append(line_spoken)
  6.         if role=='小甲鱼:':
  7.             boy.append(line_spoken)
  8.     else:
  9.         file_name_boy='boy'+str(count)+'.txt'
  10.         file_name_girl = 'girl' + str(count) + '.txt'
  11.         boy_file = open(file_name_boy, 'w', encoding='utf=8')
  12.         girl_file = open(file_name_girl, 'w', encoding='utf=8')
  13.         boy_file.writelines(girl)
  14.         girl_file.writelines(boy)
  15.         boy=[]
  16.         girl=[]
  17.         count+=1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-7 17:16:05 | 显示全部楼层
谢谢各位学友!
通过反复阅读零基础学python,发现了代码的问题:
造成空文件夹的原因是split(':',1),以“:”分割,那么分割后就不会有冒号了。小客服和小甲鱼后面不能有冒号!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 14:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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