小虾米66 发表于 2017-4-20 09:31:30

关于python的字符串分割的报错提示疑问

在《零基础入门学习Python》29节课中,跟着甲鱼老师的步骤敲得代码,结果我的就报错。可能是版本的问题吗?我的代码如下
求各位大神能给予解答~~非常感谢。
f = open('record.txt')

jia = []
yi = []
count = 1

for each_line in f:
    if each_line[:5]!='=====':
      (role, line_spoken) = each_line.split(':',1)
      if role == '甲':
            jia.append(line_spoken)
      if role == '乙':
            yi.append(line_spoken)
    else:
      file_name_jia ='jia_'+ str(count)+'.txt'
      file_name_yi ='yi_'+ str(count)+'.txt'

      jia_file = open(file_name_jia,'w')
      yi_file = open(file_name_yi,'w')

      jia_file.writelines(jia)
      yi_file.writelines(yi)

      jia_file.close()
      yi_file.close()

      jia = []
      yi = []
      count +=1

f.close()
报错如下:
================== RESTART: C:/Users/LiJW/Desktop/test1.py ==================
Traceback (most recent call last):
File "C:/Users/LiJW/Desktop/test1.py", line 9, in <module>
    (role, line_spoken) = each_line.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)
>>>


我的文件是 在桌面保存的一哥txt文档,随便找了几段甲乙的简单对话

lumber2388779 发表于 2017-4-20 09:40:56

(role, line_spoken) = each_line.split(':',1)
这一句你有两个变量,但却只有一个值,无法赋值给两个变量
你后边的确分割成两部分,而你后边参数是1取得是分割次数,分割后返回的是一个列表,你的赋值表达式只会将列表直接给第一个变量,而第二个变量没有值,那就会报错

小虾米66 发表于 2017-4-20 10:00:11

谢谢解答~~
但是视频中小甲鱼老师的代码就是这样的,,一模一样~他的就没有问题
那我这种情况下,应该怎样让分割后的字符串前半部分给role,后半部分赋给line_spoken呢

lumber2388779 发表于 2017-4-20 10:05:43

小虾米66 发表于 2017-4-20 10:00
谢谢解答~~
但是视频中小甲鱼老师的代码就是这样的,,一模一样~他的就没有问题
那我这种情况下,应该怎 ...

那你得看下你的文件中是不是用的是中文字符的:,而你代码中使用的是英文字母的:

小虾米66 发表于 2017-4-20 10:16:42

lumber2388779 发表于 2017-4-20 10:05
那你得看下你的文件中是不是用的是中文字符的:,而你代码中使用的是英文字母的:

看了,代码和文件的标点是一致的,都是英文的冒号。另外,我单挑出来一行话分割就没有问题。。。怎么破?

str=('甲:你看得到天上的云吗?')
>>> (role, spoken) = str.split(':',1)
>>> role
'甲'
>>> spoken
'你看得到天上的云吗?'

lumber2388779 发表于 2017-4-20 10:21:17

小虾米66 发表于 2017-4-20 10:16
看了,代码和文件的标点是一致的,都是英文的冒号。另外,我单挑出来一行话分割就没有问题。。。怎么破? ...

单独调试没问题的话,把每一句的each_line都print出来看一下,看下到哪一句报错,看下那一句尝试单独分割下试下

小虾米66 发表于 2017-4-20 11:13:43

lumber2388779 发表于 2017-4-20 10:21
单独调试没问题的话,把每一句的each_line都print出来看一下,看下到哪一句报错,看下那一句尝试单独分割 ...

嗯嗯,试了下你的方法找到问题了。因为原文档有一行空白的回车键,不符合分割条件,也不符合第一个====的分段条件,所以报错。
非常感谢~~
页: [1]
查看完整版本: 关于python的字符串分割的报错提示疑问