将小萝卜和小西瓜的对话单独保存,以======为分隔,实现如下:
代码:
def f(count):
for fline in ts:
fs = fline.split(':')
d[fs[0]]=d.get(fs[0],'')+fs[1]#这里表示将fs[0]给以字符串的形式,这时候就能一键对多值了,不然子字典是不能一键对多值的
for key in d:#这里key可以替换成i或者其它,最后打印出来的都会是键,不打印值
f_name = 'D:\\'+key+str(count)+'.txt'
sfs = open(f_name,'wt')
sfs.write(d[key])
sfs.close()
ts.clear()
d.clear()
d={}
count=0
ts=[]
filename=input('请输入文件名:')
f1=open(filename,'rt',encoding='utf-8')#出现编码问题时,后面加encoding='utf-8'
for line in f1:
if line[:4] == '====':
count+=1
f(count)
else:
ts.append(line)
f(count+1)
f1.close()
另一种实现方法:
def file_save(carrot,melon,count):
filename_carrot = 'D:\\'+'carrot'+str(count)+'.txt'
filename_melon = 'D:\\'+'melon'+str(count)+'.txt'
file_carrot = open('%s'%filename_carrot,'wt')
file_melon = open('%s'%filename_melon,'wt')
file_carrot.writelines(carrot)
file_melon.writelines(melon)
file_carrot.close()
file_melon.close()
def file_split(filename):
f=open(filename,'rt',encoding='utf-8')
carrot = []
melon = []
count = 1
for each_line in f:
if each_line[:4] != '====':
(role,dialogue)=each_line.split(':',1)#这里1指的是分割一次
if role == '小萝卜':
carrot.append(dialogue)
if role == '小西瓜':
melon.append(dialogue)
else:
file_save(carrot,melon,count)
count+=1
carrot = []
melon = []
file_save(carrot,melon,count)
f.close()
filename = input('请输入文件名:')
file_split(filename)