关于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文档,随便找了几段甲乙的简单对话
(role, line_spoken) = each_line.split(':',1)
这一句你有两个变量,但却只有一个值,无法赋值给两个变量
你后边的确分割成两部分,而你后边参数是1取得是分割次数,分割后返回的是一个列表,你的赋值表达式只会将列表直接给第一个变量,而第二个变量没有值,那就会报错 谢谢解答~~
但是视频中小甲鱼老师的代码就是这样的,,一模一样~他的就没有问题
那我这种情况下,应该怎样让分割后的字符串前半部分给role,后半部分赋给line_spoken呢 小虾米66 发表于 2017-4-20 10:00
谢谢解答~~
但是视频中小甲鱼老师的代码就是这样的,,一模一样~他的就没有问题
那我这种情况下,应该怎 ...
那你得看下你的文件中是不是用的是中文字符的:,而你代码中使用的是英文字母的: lumber2388779 发表于 2017-4-20 10:05
那你得看下你的文件中是不是用的是中文字符的:,而你代码中使用的是英文字母的:
看了,代码和文件的标点是一致的,都是英文的冒号。另外,我单挑出来一行话分割就没有问题。。。怎么破?
str=('甲:你看得到天上的云吗?')
>>> (role, spoken) = str.split(':',1)
>>> role
'甲'
>>> spoken
'你看得到天上的云吗?' 小虾米66 发表于 2017-4-20 10:16
看了,代码和文件的标点是一致的,都是英文的冒号。另外,我单挑出来一行话分割就没有问题。。。怎么破? ...
单独调试没问题的话,把每一句的each_line都print出来看一下,看下到哪一句报错,看下那一句尝试单独分割下试下 lumber2388779 发表于 2017-4-20 10:21
单独调试没问题的话,把每一句的each_line都print出来看一下,看下到哪一句报错,看下那一句尝试单独分割 ...
嗯嗯,试了下你的方法找到问题了。因为原文档有一行空白的回车键,不符合分割条件,也不符合第一个====的分段条件,所以报错。
非常感谢~~
页:
[1]