|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import pickle
def save_file(boy, girl, count):
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_file = open(file_name_boy, 'wb') # 记得一定要加 b 吖
girl_file = open(file_name_girl, 'wb') # 记得一定要加 b 吖
pickle.dump(boy, boy_file)
pickle.dump(girl, girl_file)
boy_file.close()
girl_file.close()
def split_file(file_name):
count = 1
boy = []
girl = []
f = open(file_name)
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:
save_file(boy, girl, count)
boy = []
girl = []
count += 1
save_file(boy, girl, count)
f.close()
split_file('record.txt')
上面大字显示的红色代码是什么意思,左边是元组 右边是列表??(把答案原封不动的复制到pycharm里也报错,但是为啥甲鱼哥的视频里就可以运行)
(最后想不出原因就改成这样了:
split_list = each_line.split(':',1)
if split_list[0] == '小客服':
girl.append(split_list[1])
if split_list[0] == '小甲鱼':
boy.append(split_list[1]))
本帖最后由 ABC23 于 2018-4-30 20:05 编辑
没有课后习题,我就自己随便写了个文件
===========================
>>> paragraph = '''张三:你好,我是张三。
李四:你好,我是李四。'''
>>> with open('foo.txt', 'w') as f:
f.write(paragraph)
23
>>> with open('foo.txt', 'r') as f:
zhang = []
li = []
paragraph = f.readlines()
for line in paragraph:
(role, saying) = line.split(':', 1)
if role == '张三':
zhang.append(saying.rstrip())
else:
li.append(saying.rstrip())
>>> for line1 in zhang:
for line2 in li:
print(line1)
print(line2)
你好,我是张三。
你好,我是李四。
没有问题啊。
============================
看你的反馈是因为参数数目不匹配造成的,这究竟是为什么呢???
>>> with open('foo.txt', 'r') as f:
zhang = []
li = []
paragraph = f.readlines()
for line in paragraph:
(role, saying) = line.split(':', 1)
if role == '张三':
zhang.append(saying.rstrip())
else:
li.append(saying.rstrip())
Traceback (most recent call last):
File "<pyshell#37>", line 6, in <module>
(role, saying) = line.split(':', 1)
ValueError: not enough values to unpack (expected 2, got 1)
哈哈,我想了下终于明白了(看上面第六行,元组解包那一行)——原来是因为【误把中文输入的:当作了英文输入的:】,这样在【元组解包】后,右边只有一个(相当于没有解包),而左边有两个,这就造成了数目上的不匹配。
应该就是这个了。选我为最佳答案吧。
|
|