python做一个小任务,出现一个编译错误,以此记录。
**任务: 将文件(test.txt)中的数据进行分割并按照以下规律保存起来: -小甲鱼的对话单独保存为boy_ .txt的文件(去掉小甲鱼:”) -小客服的对话单独保存为girl_ .txt的文件(去掉小客服:”) -文件中总共有三段对话,分别保存为boy_ 1.txt,girl_ 1.txt,boy_ 2.txt, ,girl_ 2.txt, boy_ 3.txt, gril_ 3.txt共6个文件 (提示:文件中不同的对话间已经使用“========:”分割)
源代码:
f = open('D:\\pythondata\\test.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
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()
f.close()
执行编译结果:程序要求将读取的每行以 : 为界分为两部分,如果找不到 : 就会报错。
报错的可能原因:
1、test.txt文件中将 :误写成中文冒号了。
2、test.txt文件中有序列中没有:
(比如第一句,第二句)
解决方法:
1、讲文档中的冒号修改成英文冒号,保存即可。
2、在序列中加入冒号,保存。
执行成功图示:
优化程序:
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,'w')
girl_file = open(file_name_girl,'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
def split_file(file_name):
f = open('D:\\pythondata\\test.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:
save_file(boy,girl,count)
boy = []
girl = []
count +=1
save_file(boy,girl,count)
f.close()
split_file('test.txt')