aiivu 发表于 2020-4-14 22:20:25

萌新求助

老的《零基础入门学习python》第29讲中

(role,spoken)=each.split(" :",1)
ValueError: not enough values to unpack (expected 2, got 1)
我用的是小甲鱼的record.txt,网上查了问题可能是中英文字符或换行符的问题
但依旧报这个错,请问有人知道为啥吗?

小小小菜菜菜 发表于 2020-4-14 22:24:49

标点符号:换成中文的试试

永恒的蓝色梦想 发表于 2020-4-14 22:25:14

是因为==========================这一行中split只返回一个值,不能正确赋值,需要 try except 处理

aiivu 发表于 2020-4-14 22:47:31

永恒的蓝色梦想 发表于 2020-4-14 22:25
是因为这一行中split只返回一个值,不能正确赋值,需要 try except 处理

for each in f:
    if each[:6]!='=======':
      (role,spoken)=each.split(" :",1)
      if role=='小甲鱼':
            boy.append(spoken)
      if role=='小客服':
            girl.append(spoken)
但是只有在非“======”时才进这里面啊

永恒的蓝色梦想 发表于 2020-4-14 22:50:03

aiivu 发表于 2020-4-14 22:47
for each in f:
    if each[:6]!='=======':
      (role,spoken)=each.split(" :",1)


emmmm
把所有代码和输入发上来

aiivu 发表于 2020-4-14 22:51:09

f=open('record.txt')
boy=[]
girl=[]
count=1
for each in f:
    if each[:6]!='=======':
      (role,spoken)=each.split(" :",1)
      if role=='小甲鱼':
            boy.append(spoken)
      if role=='小客服':
            girl.append(spoken)
    else:
      file_name_boy='boy'+str(count)+'.txt'
      file_name_girl='girl'+str(count)+'.txt'


      boy_file=open(file_name_boy,'x')
      girl_file=open(file_name_girl,'x')


      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,'x')
girl_file=open(file_name_girl,'x')


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

boy_file.close()
girl_file.close()

f.close()

aiivu 发表于 2020-4-14 22:53:55

小小小菜菜菜 发表于 2020-4-14 22:24
标点符号:换成中文的试试

试了,不是这个原因

aiivu 发表于 2020-4-14 22:57:55

https://fishc.com.cn/forum.php?mod=attachment&aid=MjM1NDh8OTBmYjY2YmV8MTU4Njg3MjQ1Mnw4ODM0ODh8NDU4OTA%3D

岚冰1234 发表于 2020-4-15 01:10:01

你多打了个=号,你取的是前6个字符,但是你的等号有7个
改成这样就可以了
if each[:6]!='======':

aiivu 发表于 2020-4-15 03:02:01

岚冰1234 发表于 2020-4-15 01:10
你多打了个=号,你取的是前6个字符,但是你的等号有7个
改成这样就可以了
if each[:6]!='======':

谢谢提醒,这里确实打错了,但这和报错的部分没有直接关系,运行后还是报同样的错

XiaoPaiShen 发表于 2020-4-15 03:55:57

第一步:
从下面链接下载 record.txt

python第029课小甲鱼和小客服的对话record.txt文件分享
https://fishc.com.cn/thread-145702-1-1.html
(出处: 鱼C论坛)

XiaoPaiShen 发表于 2020-4-15 04:04:45

第二步:

解压zip
用word 打开

XiaoPaiShen 发表于 2020-4-15 04:07:04

第三部:
用 word 另存为 utf-8 文件

XiaoPaiShen 发表于 2020-4-15 04:08:22

第四部:
python 文件修改如下:

f=open('record.txt', encoding='utf-8')
boy=[]
girl=[]
count=1
for each in f:
    if each[:6]!='======':
      (role,spoken)=each.split(":",1)
      if role=='小甲鱼':
            boy.append(spoken)
      if role=='小客服':
            girl.append(spoken)
    else:
      file_name_boy='boy'+str(count)+'.txt'
      file_name_girl='girl'+str(count)+'.txt'


      boy_file=open(file_name_boy,'x', encoding='utf-8')
      girl_file=open(file_name_girl,'x', encoding='utf-8')


      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,'x', encoding='utf-8')
girl_file=open(file_name_girl,'x', encoding='utf-8')


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

boy_file.close()
girl_file.close()

f.close()
页: [1]
查看完整版本: 萌新求助