本帖最后由 深山小兽 于 2020-10-25 01:30 编辑
问题出在缩进里,主要出现在分割文件上,你按我这样修改你自己的缩进就好了。def save_file(count,boy,girl): #保存文件
boy_file = 'boy'+str(count)+'.txt'
girl_file = 'girl'+str(count)+'.txt'
boy_spoken = open(boy_file,'w')
girl_spoken = open(girl_file,'w')
boy_spoken.writelines(boy)
girl_spoken.writelines(girl)
boy_spoken.close()
girl_spoken.close()
def class_file(file_name) : # 文件分类
f=open(file_name)
boy=[]
girl=[]
count=1
for each_line in f:
if each_line[:6]!='======':
(role,line_spoken)=each_line.split(':',1)
if role == '小甲鱼'# 这个缩进错误,导致第一个if失效,无法利用
# =======做判定文件的判定条件,会导致把小甲鱼的所有聊天的文字都分割到第一个boy列表里。
boy.append(line_spoken)
elif role == '小客服'#这里elif和上面相似,也是并列了if语句,使得第一个if没有起到该有的价值
girl.append(line_spoken)
else:#这个else由于缩进问题和for搭配了,还是导致第一个if失效了。由于前面的失效导致实际上只执行了一次save_file(count,boy,girl)
save_file(count,boy,girl)
boy=[]
girl=[]
count+=1
save_file(count,boy,girl)#这里是无数据的保存,由于执行了boy=[]和girl=[],也就是重新贴标签空列表。所以这里最后一次保存是没有数据的。
f.close()
class_file('record.txt')
正确的代码如下:def save_file(count,boy,girl): #保存文件
boy_file = 'boy'+str(count)+'.txt'
girl_file = 'girl'+str(count)+'.txt'
boy_spoken = open(boy_file,'w')
girl_spoken = open(girl_file,'w')
boy_spoken.writelines(boy)
girl_spoken.writelines(girl)
boy_spoken.close()
girl_spoken.close()
def class_file(file_name) : # 文件分类
f=open(file_name)
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)
elif role == '小客服':
girl.append(line_spoken)
else:
save_file(count,boy,girl)
boy=[]
girl=[]
count+=1
save_file(count,boy,girl)
f.close()
class_file('record.txt')
|