鱼C论坛

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

[已解决]关于小甲鱼教学文件视频中的代码问题

[复制链接]
发表于 2021-7-21 22:02:05 | 显示全部楼层 |阅读模式

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

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

x
为啥差不多的代码。我报错了,很不解
  1. zhu = []
  2. qu = []
  3. 计数器=1
  4. f=open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt","r",encoding="utf-8")
  5. for each_line in f:
  6.         if each_line[:6] !="======":
  7.                 (role,line_spoken)=str(each_line).split(":",1)
  8.                 if role=="朱":
  9.                         zhu.append(line_spoken)
  10.                 if role=="曲":
  11.                         qu.append(line_spoken)
  12.         else:
  13.                 file_name_zhu="zhu"+str(计数器)+".txt"
  14.                 file_name_qu="qu"+str(计数器)+".txt"
  15.                 f1=open("C:\\Users\98677\Desktop\Python\文件\分割""""+str(file_name_zhu),"w")
  16.                 f1.write(qu[:])
  17.                 f2=open("C:\\Users\98677\Desktop\Python\文件\分割""""+str(file_name_qu),"w")
  18.                 f2.write(qu[:])
  19.                
  20.                 zhu=[]
  21.                 qu=[]
  22.                 计数器=[]
  23.                 f1.close()
  24.                 f2.close()
  25.                
  26. f.close()
  27.                
复制代码


错误是
C:\Users\98677\AppData\Local\Programs\Python\Python39\python.exe C:/Users/98677/Desktop/Python/文件/分割/分割跟着做.py
Traceback (most recent call last):
  File "C:\Users\98677\Desktop\Python\文件\分割\分割跟着做.py", line 7, in <module>
    (role,line_spoken)=str(each_line).split(":",1)
ValueError: not enough values to unpack (expected 2, got 1)

Process finished with exit code 1
最佳答案
2021-7-21 23:21:18
xnshr 发表于 2021-7-21 22:21
朱:谢谢。谢谢,谢谢朋友们的热情掌声。

曲:是。



你的 txt 文本内容中,有空行、标点符号混用、有英文的冒号、中文的冒号、还有把冒号打成分号的...

这样都导致你 split(":",1) 过程报错,因为这里要对循环到某行的对话进行切割,而且是英文冒号进行切割一次

简单理解,split 中没有 : 英文冒号都会导致这里报错,英文 split 切割若没有切割到对应字符,那么返回的就是一个原字符串列表

而你对其进行两个变量接收单元素列表,会导致元素不够分给两个变量而报错(Ps:所以这里:(朱四处转 ......  朱,停下了) 这段也删去了)

所以你文本内容首先要改改:

  1. 朱:谢谢。谢谢,谢谢朋友们的热情掌声。
  2. 曲:是。
  3. 朱:昨天我刚看了一本书。
  4. 曲:什么?
  5. 朱:《红岩》。
  6. 曲:好书好书。
  7. 朱:这本书的作者是罗金保和杨艺璇——
  8. ===================================================================================
  9. 曲:您等等吧,罗金宝人那是小兵张嘎里头的.
  10. 朱:别的艺术行业,你也涉及吗?
  11. 曲:就别的艺术形式,那看您问什么了。
  12. 朱:好,那我问问你。
  13. 曲:问吧。
  14. 朱:比如说话剧了解吗?
  15. 曲:话剧,爱看呀,北京人艺。
  16. 朱:戏曲呢?
  17. 曲:戏曲更爱听了
  18. 朱:鬼故事你会讲吗?
  19. 曲:(突然回过神来)不是,孙子你要聊哪个呀?
  20. 朱:老师,这就别拍了啊。
  21. 曲:不是你要聊什么呀?
  22. 朱:骂什么街呀。
  23. 曲:您会唱京剧吗?
  24. 朱:那是当然
  25. 曲:那个戏叫什么,叫《窦公训女》,您行吗这个?
  26. 朱:我行我行我专业。
  27. 曲:我没问你专业,就这出戏您知道吗?
  28. 朱:我知道。
  29. 曲:剧情。
  30. 朱:还有剧情哪?
  31. 曲:您净看这没剧情的了。
  32. 朱:行,那你给说说。
  33. 曲:我说说。我知道多少说多少。哪不对您给我补充行吗?
  34. ===================================================================================
  35. 朱:行。
  36. 曲:这个戏发生在这个五代残唐的时候,有个落魄的将军叫高怀德,找自己的好朋友窦燕山,借了200两纹银干什么呢,给自己义子高彤上关外做买卖。
  37. 朱:(发觉到了曲)说你的,没事。
  38. 曲:不是,您能认真听会吗?
  39. 朱:(跑到老师那)老师,你那是5s吗?是不是5s,你给我看看。
  40. 曲:我这没说——
  41. 朱:(没等曲说完)是5s,因为它这有一圈,你知道吗。照相呢,照相呢。
  42. 曲:谁跟你照。
  43. 朱:咱俩好不容易合作一回,唱一回。
  44. 曲:是合作,你还知道啊,我这给人讲剧情呢知道吗?
  45. 朱:咱不是说鬼故事吗?
  46. 曲:谁跟你说鬼故事了?咱这不唱戏吗?
  47. 朱:改唱戏了?
  48. 曲:压根就说唱戏,我这不是介绍剧情吗?
  49. 朱:那咱来唱《全德报》。
  50. 曲:对对对。千金全德报,对不对?
  51. 朱:。。。
复制代码


代码也蛮多错误的地方,都帮你改了改,参考参考吧:

  1. zhu = []
  2. qu = []
  3. 计数器 = 1
  4. f = open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt", "r", encoding="utf-8")
  5. for each_line in f:
  6.     if each_line[:6] != "======":
  7.         (role, line_spoken) = each_line.split(":", 1)
  8.         if role == "朱":
  9.             zhu.append(line_spoken)
  10.         if role == "曲":
  11.             qu.append(line_spoken)
  12.     else:
  13.         file_name_zhu = "zhu" + str(计数器) + ".txt"
  14.         file_name_qu = "qu" + str(计数器) + ".txt"
  15.         f1 = open(file_name_zhu,"w", encoding="utf-8")
  16.         f1.writelines(zhu)
  17.         f2 = open(file_name_qu, "w", encoding="utf-8")
  18.         f2.writelines(qu)

  19.         zhu = []
  20.         qu = []
  21.         计数器 += 1
  22.         f1.close()
  23.         f2.close()
  24. file_name_zhu = "zhu" + str(计数器) + ".txt"
  25. file_name_qu = "qu" + str(计数器) + ".txt"
  26. f1 = open(file_name_zhu,"w", encoding="utf-8")
  27. f1.writelines(zhu)
  28. f2 = open(file_name_qu, "w", encoding="utf-8")
  29. f2.writelines(qu)

  30. f1.close()
  31. f2.close()
  32. f.close()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-21 22:06:50 | 显示全部楼层
裂开
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 22:18:15 | 显示全部楼层
str(each_line).split(":",1) 没有分隔成功,查一下each_line的内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 22:21:26 | 显示全部楼层
suchocolate 发表于 2021-7-21 22:18
str(each_line).split(":",1) 没有分隔成功,查一下each_line的内容。

朱:谢谢。谢谢,谢谢朋友们的热情掌声。

曲:是。

朱:昨天我刚看了一本书。

曲:什么?

朱:《红岩》。

曲:好书好书。

朱:这本书的作者是罗金保和杨艺璇——

===================================================================================

曲:您等等吧,罗金宝人那是小兵张嘎里头的.

朱:别的艺术行业,你也涉及吗?

曲:就别的艺术形式,那看您问什么了。

朱:好,那我问问你。

曲:问吧。

朱:比如说话剧了解吗?

曲:话剧,爱看呀,北京人艺。

朱:戏曲呢?

曲:戏曲更爱听了

朱:鬼故事你会讲吗?

曲:(突然回过神来)不是,孙子你要聊哪个呀?

朱:老师,这就别拍了啊。

曲:不是你要聊什么呀?

朱;骂什么街呀。

曲:您会唱京剧吗?

朱:那是当然

曲:那个戏叫什么,叫《窦公训女》,您行吗这个?

朱:我行我行我专业。

曲:我没问你专业,就这出戏您知道吗?

朱:我知道。

曲:剧情。

朱:还有剧情哪?

曲:您净看这没剧情的了。

朱;行,那你给说说。

曲:我说说。我知道多少说多少。哪不对您给我补充行吗?
===================================================================================
朱:行。

曲:这个戏发生在这个五代残唐的时候,有个落魄的将军叫高怀德,找自己的好朋友窦燕山,借了200两纹银干什么呢,给自己义子高彤上关外做买卖。

(朱四处转,曲还没发觉,继续说他的)孩子一去三年音信全无,钱还不上,高怀德着急了,怎么办呢?钱还不上,赶上赶考,高怀德一想我有能耐呀。我考中了高官得坐骏马得骑,可是去不了,怎么呢?有个闺女带在身边,年方18岁,不方便,一咬牙—(突然看见朱,停下了)

朱:(发觉到了曲)说你的,没事。

曲:不是,您能认真听会吗?

朱:(跑到老师那)老师,你那是5s吗?是不是5s,你给我看看。

曲:我这没说——

朱:(没等曲说完)是5s,因为它这有一圈,你知道吗。照相呢,照相呢。

曲:谁跟你照。

朱;咱俩好不容易合作一回,唱一回。

曲:是合作,你还知道啊,我这给人讲剧情呢知道吗?

朱:咱不是说鬼故事吗?

曲:谁跟你说鬼故事了?咱这不唱戏吗?

朱:改唱戏了?

曲:压根就说唱戏,我这不是介绍剧情吗?

朱:那咱来唱《全德报》。

曲:对对对。千金全德报,对不对?

朱:。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 23:21:18 | 显示全部楼层    本楼为最佳答案   
xnshr 发表于 2021-7-21 22:21
朱:谢谢。谢谢,谢谢朋友们的热情掌声。

曲:是。



你的 txt 文本内容中,有空行、标点符号混用、有英文的冒号、中文的冒号、还有把冒号打成分号的...

这样都导致你 split(":",1) 过程报错,因为这里要对循环到某行的对话进行切割,而且是英文冒号进行切割一次

简单理解,split 中没有 : 英文冒号都会导致这里报错,英文 split 切割若没有切割到对应字符,那么返回的就是一个原字符串列表

而你对其进行两个变量接收单元素列表,会导致元素不够分给两个变量而报错(Ps:所以这里:(朱四处转 ......  朱,停下了) 这段也删去了)

所以你文本内容首先要改改:

  1. 朱:谢谢。谢谢,谢谢朋友们的热情掌声。
  2. 曲:是。
  3. 朱:昨天我刚看了一本书。
  4. 曲:什么?
  5. 朱:《红岩》。
  6. 曲:好书好书。
  7. 朱:这本书的作者是罗金保和杨艺璇——
  8. ===================================================================================
  9. 曲:您等等吧,罗金宝人那是小兵张嘎里头的.
  10. 朱:别的艺术行业,你也涉及吗?
  11. 曲:就别的艺术形式,那看您问什么了。
  12. 朱:好,那我问问你。
  13. 曲:问吧。
  14. 朱:比如说话剧了解吗?
  15. 曲:话剧,爱看呀,北京人艺。
  16. 朱:戏曲呢?
  17. 曲:戏曲更爱听了
  18. 朱:鬼故事你会讲吗?
  19. 曲:(突然回过神来)不是,孙子你要聊哪个呀?
  20. 朱:老师,这就别拍了啊。
  21. 曲:不是你要聊什么呀?
  22. 朱:骂什么街呀。
  23. 曲:您会唱京剧吗?
  24. 朱:那是当然
  25. 曲:那个戏叫什么,叫《窦公训女》,您行吗这个?
  26. 朱:我行我行我专业。
  27. 曲:我没问你专业,就这出戏您知道吗?
  28. 朱:我知道。
  29. 曲:剧情。
  30. 朱:还有剧情哪?
  31. 曲:您净看这没剧情的了。
  32. 朱:行,那你给说说。
  33. 曲:我说说。我知道多少说多少。哪不对您给我补充行吗?
  34. ===================================================================================
  35. 朱:行。
  36. 曲:这个戏发生在这个五代残唐的时候,有个落魄的将军叫高怀德,找自己的好朋友窦燕山,借了200两纹银干什么呢,给自己义子高彤上关外做买卖。
  37. 朱:(发觉到了曲)说你的,没事。
  38. 曲:不是,您能认真听会吗?
  39. 朱:(跑到老师那)老师,你那是5s吗?是不是5s,你给我看看。
  40. 曲:我这没说——
  41. 朱:(没等曲说完)是5s,因为它这有一圈,你知道吗。照相呢,照相呢。
  42. 曲:谁跟你照。
  43. 朱:咱俩好不容易合作一回,唱一回。
  44. 曲:是合作,你还知道啊,我这给人讲剧情呢知道吗?
  45. 朱:咱不是说鬼故事吗?
  46. 曲:谁跟你说鬼故事了?咱这不唱戏吗?
  47. 朱:改唱戏了?
  48. 曲:压根就说唱戏,我这不是介绍剧情吗?
  49. 朱:那咱来唱《全德报》。
  50. 曲:对对对。千金全德报,对不对?
  51. 朱:。。。
复制代码


代码也蛮多错误的地方,都帮你改了改,参考参考吧:

  1. zhu = []
  2. qu = []
  3. 计数器 = 1
  4. f = open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt", "r", encoding="utf-8")
  5. for each_line in f:
  6.     if each_line[:6] != "======":
  7.         (role, line_spoken) = each_line.split(":", 1)
  8.         if role == "朱":
  9.             zhu.append(line_spoken)
  10.         if role == "曲":
  11.             qu.append(line_spoken)
  12.     else:
  13.         file_name_zhu = "zhu" + str(计数器) + ".txt"
  14.         file_name_qu = "qu" + str(计数器) + ".txt"
  15.         f1 = open(file_name_zhu,"w", encoding="utf-8")
  16.         f1.writelines(zhu)
  17.         f2 = open(file_name_qu, "w", encoding="utf-8")
  18.         f2.writelines(qu)

  19.         zhu = []
  20.         qu = []
  21.         计数器 += 1
  22.         f1.close()
  23.         f2.close()
  24. file_name_zhu = "zhu" + str(计数器) + ".txt"
  25. file_name_qu = "qu" + str(计数器) + ".txt"
  26. f1 = open(file_name_zhu,"w", encoding="utf-8")
  27. f1.writelines(zhu)
  28. f2 = open(file_name_qu, "w", encoding="utf-8")
  29. f2.writelines(qu)

  30. f1.close()
  31. f2.close()
  32. f.close()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 23:24:51 | 显示全部楼层
Twilight6 发表于 2021-7-21 23:21
你的 txt 文本内容中,有空行、标点符号混用、有英文的冒号、中文的冒号、还有把冒号打成分号的...
...

解决了,谢谢,后面的f2.writelines(qu),小甲鱼这么写没问题,但我写就报错,说是类型必须是str,是因为版本不一样吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 23:26:33 | 显示全部楼层
xnshr 发表于 2021-7-21 23:24
解决了,谢谢,后面的f2.writelines(qu),小甲鱼这么写没问题,但我写就报错,说是类型必须是str,是因为 ...


write 必须是 str 而 writelines str 和 列表均可

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-21 23:29:19 | 显示全部楼层
Twilight6 发表于 2021-7-21 23:26
write 必须是 str 而 writelines str 和 列表均可

全是细节,非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-21 23:29:42 | 显示全部楼层
xnshr 发表于 2021-7-21 23:29
全是细节,非常感谢

客气~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-21 14:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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