python复习之关于文件的编程题补充

将小萝卜和小西瓜的对话单独保存,以======为分隔,实现如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码:

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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值