鱼C论坛

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

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

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

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

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

x
为啥差不多的代码。我报错了,很不解
zhu = []
qu = []
计数器=1
f=open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt","r",encoding="utf-8")
for each_line in f:
        if each_line[:6] !="======":
                (role,line_spoken)=str(each_line).split(":",1)
                if role=="朱":
                        zhu.append(line_spoken)
                if role=="曲":
                        qu.append(line_spoken)
        else:
                file_name_zhu="zhu"+str(计数器)+".txt"
                file_name_qu="qu"+str(计数器)+".txt"
                f1=open("C:\\Users\98677\Desktop\Python\文件\分割""""+str(file_name_zhu),"w")
                f1.write(qu[:])
                f2=open("C:\\Users\98677\Desktop\Python\文件\分割""""+str(file_name_qu),"w")
                f2.write(qu[:])
                
                zhu=[]
                qu=[]
                计数器=[]
                f1.close()
                f2.close()
                
f.close()
                

错误是
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:所以这里:(朱四处转 ......  朱,停下了) 这段也删去了)

所以你文本内容首先要改改:
朱:谢谢。谢谢,谢谢朋友们的热情掌声。
曲:是。
朱:昨天我刚看了一本书。
曲:什么?
朱:《红岩》。
曲:好书好书。
朱:这本书的作者是罗金保和杨艺璇——
===================================================================================
曲:您等等吧,罗金宝人那是小兵张嘎里头的.
朱:别的艺术行业,你也涉及吗?
曲:就别的艺术形式,那看您问什么了。
朱:好,那我问问你。
曲:问吧。
朱:比如说话剧了解吗?
曲:话剧,爱看呀,北京人艺。
朱:戏曲呢?
曲:戏曲更爱听了
朱:鬼故事你会讲吗?
曲:(突然回过神来)不是,孙子你要聊哪个呀?
朱:老师,这就别拍了啊。
曲:不是你要聊什么呀?
朱:骂什么街呀。
曲:您会唱京剧吗?
朱:那是当然
曲:那个戏叫什么,叫《窦公训女》,您行吗这个?
朱:我行我行我专业。
曲:我没问你专业,就这出戏您知道吗?
朱:我知道。
曲:剧情。
朱:还有剧情哪?
曲:您净看这没剧情的了。
朱:行,那你给说说。
曲:我说说。我知道多少说多少。哪不对您给我补充行吗?
===================================================================================
朱:行。
曲:这个戏发生在这个五代残唐的时候,有个落魄的将军叫高怀德,找自己的好朋友窦燕山,借了200两纹银干什么呢,给自己义子高彤上关外做买卖。
朱:(发觉到了曲)说你的,没事。
曲:不是,您能认真听会吗?
朱:(跑到老师那)老师,你那是5s吗?是不是5s,你给我看看。
曲:我这没说——
朱:(没等曲说完)是5s,因为它这有一圈,你知道吗。照相呢,照相呢。
曲:谁跟你照。
朱:咱俩好不容易合作一回,唱一回。
曲:是合作,你还知道啊,我这给人讲剧情呢知道吗?
朱:咱不是说鬼故事吗?
曲:谁跟你说鬼故事了?咱这不唱戏吗?
朱:改唱戏了?
曲:压根就说唱戏,我这不是介绍剧情吗?
朱:那咱来唱《全德报》。
曲:对对对。千金全德报,对不对?
朱:。。。

代码也蛮多错误的地方,都帮你改了改,参考参考吧:
zhu = []
qu = []
计数器 = 1
f = open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt", "r", encoding="utf-8")
for each_line in f:
    if each_line[:6] != "======":
        (role, line_spoken) = each_line.split(":", 1)
        if role == "朱":
            zhu.append(line_spoken)
        if role == "曲":
            qu.append(line_spoken)
    else:
        file_name_zhu = "zhu" + str(计数器) + ".txt"
        file_name_qu = "qu" + str(计数器) + ".txt"
        f1 = open(file_name_zhu,"w", encoding="utf-8")
        f1.writelines(zhu)
        f2 = open(file_name_qu, "w", encoding="utf-8")
        f2.writelines(qu)

        zhu = []
        qu = []
        计数器 += 1
        f1.close()
        f2.close()
file_name_zhu = "zhu" + str(计数器) + ".txt"
file_name_qu = "qu" + str(计数器) + ".txt"
f1 = open(file_name_zhu,"w", encoding="utf-8")
f1.writelines(zhu)
f2 = open(file_name_qu, "w", encoding="utf-8")
f2.writelines(qu)

f1.close()
f2.close()
f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-21 22:06:50 | 显示全部楼层
裂开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-21 22:18:15 | 显示全部楼层
str(each_line).split(":",1) 没有分隔成功,查一下each_line的内容。
想知道小甲鱼最近在做啥?请访问 -> 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,因为它这有一圈,你知道吗。照相呢,照相呢。

曲:谁跟你照。

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

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

朱:咱不是说鬼故事吗?

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

朱:改唱戏了?

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

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

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

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

使用道具 举报

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

曲:是。



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

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

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

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

所以你文本内容首先要改改:
朱:谢谢。谢谢,谢谢朋友们的热情掌声。
曲:是。
朱:昨天我刚看了一本书。
曲:什么?
朱:《红岩》。
曲:好书好书。
朱:这本书的作者是罗金保和杨艺璇——
===================================================================================
曲:您等等吧,罗金宝人那是小兵张嘎里头的.
朱:别的艺术行业,你也涉及吗?
曲:就别的艺术形式,那看您问什么了。
朱:好,那我问问你。
曲:问吧。
朱:比如说话剧了解吗?
曲:话剧,爱看呀,北京人艺。
朱:戏曲呢?
曲:戏曲更爱听了
朱:鬼故事你会讲吗?
曲:(突然回过神来)不是,孙子你要聊哪个呀?
朱:老师,这就别拍了啊。
曲:不是你要聊什么呀?
朱:骂什么街呀。
曲:您会唱京剧吗?
朱:那是当然
曲:那个戏叫什么,叫《窦公训女》,您行吗这个?
朱:我行我行我专业。
曲:我没问你专业,就这出戏您知道吗?
朱:我知道。
曲:剧情。
朱:还有剧情哪?
曲:您净看这没剧情的了。
朱:行,那你给说说。
曲:我说说。我知道多少说多少。哪不对您给我补充行吗?
===================================================================================
朱:行。
曲:这个戏发生在这个五代残唐的时候,有个落魄的将军叫高怀德,找自己的好朋友窦燕山,借了200两纹银干什么呢,给自己义子高彤上关外做买卖。
朱:(发觉到了曲)说你的,没事。
曲:不是,您能认真听会吗?
朱:(跑到老师那)老师,你那是5s吗?是不是5s,你给我看看。
曲:我这没说——
朱:(没等曲说完)是5s,因为它这有一圈,你知道吗。照相呢,照相呢。
曲:谁跟你照。
朱:咱俩好不容易合作一回,唱一回。
曲:是合作,你还知道啊,我这给人讲剧情呢知道吗?
朱:咱不是说鬼故事吗?
曲:谁跟你说鬼故事了?咱这不唱戏吗?
朱:改唱戏了?
曲:压根就说唱戏,我这不是介绍剧情吗?
朱:那咱来唱《全德报》。
曲:对对对。千金全德报,对不对?
朱:。。。

代码也蛮多错误的地方,都帮你改了改,参考参考吧:
zhu = []
qu = []
计数器 = 1
f = open("C:\\Users\98677\Desktop\Python\文件\分割\相声剧本.txt", "r", encoding="utf-8")
for each_line in f:
    if each_line[:6] != "======":
        (role, line_spoken) = each_line.split(":", 1)
        if role == "朱":
            zhu.append(line_spoken)
        if role == "曲":
            qu.append(line_spoken)
    else:
        file_name_zhu = "zhu" + str(计数器) + ".txt"
        file_name_qu = "qu" + str(计数器) + ".txt"
        f1 = open(file_name_zhu,"w", encoding="utf-8")
        f1.writelines(zhu)
        f2 = open(file_name_qu, "w", encoding="utf-8")
        f2.writelines(qu)

        zhu = []
        qu = []
        计数器 += 1
        f1.close()
        f2.close()
file_name_zhu = "zhu" + str(计数器) + ".txt"
file_name_qu = "qu" + str(计数器) + ".txt"
f1 = open(file_name_zhu,"w", encoding="utf-8")
f1.writelines(zhu)
f2 = open(file_name_qu, "w", encoding="utf-8")
f2.writelines(qu)

f1.close()
f2.close()
f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

解决了,谢谢,后面的f2.writelines(qu),小甲鱼这么写没问题,但我写就报错,说是类型必须是str,是因为版本不一样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

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

使用道具 举报

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

全是细节,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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