零基础入门学习python第29课“一个任务”求助
各位大佬,小弟按照课件中程序编辑如下:f = open('record.txt')
boy = []
girl = []
count = 1
for each_line in f:
if each_line != '======':
# 这里进行字符串分割操作
(role, line_spoken) = each_line.split(' : ', 1)
if role == '小甲鱼':
boy.append(line_spoken)
if role == '小客服':
girl.append(line_spoken)
else:
# 文件的分别保存操作
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
boy = []
girl = []
count += 1
f.close()
结果在执行时有如下报错:
Traceback (most recent call last):
File "E:/python/test_1.py", line 10, in <module>
(role, line_spoken) = each_line.split(' : ', 1)
ValueError: not enough values to unpack (expected 2, got 1)
请问主要是什么原因引发的,以及如何解决呢? 本帖最后由 Twilight6 于 2020-7-10 17:21 编辑
if each_line != '======':这里错了 需要列表切片前6 个 ,因为你后面判断的是 6 个等号
否则你 for 循环每次都是读取一行的,会把一行内所有的 = 号都读取出来,导致 if 条件始终成立
而 if 条件成立了 通过 split 切割发现没有 :冒号,所以只返回一个值,而你设置了两个参数来接收导致报错
f = open('record.txt')
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
# 这里进行字符串分割操作
(role, line_spoken) = each_line.split(' : ', 1)
if role == '小甲鱼':
boy.append(line_spoken)
if role == '小客服':
girl.append(line_spoken)
else:
# 文件的分别保存操作
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
boy = []
girl = []
count += 1
f.close() Twilight6 发表于 2020-7-10 17:18
if each_line != '======':这里错了 需要列表切片前6 个 ,因为你后面判断的是 6 个等号
否则你 for ...
您好,还是不行哦,依然是split函数那里提示缺少参数。 还没学到这一步,{:5_109:} Pugss_风 发表于 2020-7-10 17:21
您好,还是不行哦,依然是split函数那里提示缺少参数。
那你把 split 切片的冒号改成英文的,而且不能有空格,你有空格肯定切片会失败 Pugss_风 发表于 2020-7-10 17:21
您好,还是不行哦,依然是split函数那里提示缺少参数。
(role, line_spoken) = each_line.split(':', 1) Twilight6 发表于 2020-7-10 17:25
那你把 split 切片的冒号改成英文的,而且不能有空格,你有空格肯定切片会失败
找到原因了,感谢感谢 程序中有两个问题:
1、if each_line != '======':条件句中,未设定字符串长度,应改为:if each_line[:6] != '======':
2、split函数中的" : "包含了空格,所以导致无法完成字符串分割的操作,应去掉空格。此外还应注意是英文冒号。 Pugss_风 发表于 2020-7-10 17:29
程序中有两个问题:
1、if each_line != '======':条件句中,未设定字符串长度,应改为:if each_line[:6] ...
嗯 是的
页:
[1]