python-文件2-文件内容的分类保存

1. 解决的问题

把jock.txt文本里甲、乙的四段对话分别提炼出来,每段对话分成两个文件,一个记录甲说的话,一个记录乙说的话,共八个文件

2. 准备工作

在F盘下的jock文件夹里创建jock.txt文件,文件内容是甲、乙两个人的对话

  • 存储地址:F:/jock/jock.txt
  • 对话:共四段,每段以=====作为段落的结束标识

甲:我给乙妹妹解决了数学的问题
乙:我要对甲哥哥以身相许
甲:(语重心长)长得好看是以身相许,你这叫恩将仇报
================================================
甲:我每天都去耶路撒冷哭
乙:我是CNN记者XXX,老先生,您来哭墙祈祷已有多久了
甲:差不多50年
乙:五十年,太惊人了!请问你都祈祷了什么?
甲:我祈祷犹太人与阿拉伯人和平相处
乙:那做了五十年,您有什么感觉
甲:我他妈根本就是对墙自言自语
================================================
甲:乙,女神她QQ发给我一句话你给我翻一下
甲:if you never abandon,I will in life and death.
乙:你若离开我,我就和你同归于尽
甲:2年后,女神孩子都有了
乙:听说你英语过级了
甲:那他妈是你若不离不弃,我比生死相依。mmp我弄死乙的心都有
================================================
甲:最近看养生节目了没,
乙:看了
甲:节目说吸烟不好
乙:嗯嗯,我把烟戒了
甲:说喝酒也不好
乙:嗯嗯。我把酒也戒了、
甲:节目说xing生活对肾不好
乙:嗯嗯,我把养生节目戒了
================================================

3.代码思路

  1. 打开jock.txt文件,定义放置挑选出来的数据的容器(jia,yi列表),定义文件命名迭代参数(count)
  2. 用for循环逐行遍历jock.txt文件,用if判断是不是段落的结束,不是新段落就用split()对数据进行分割,并把值分别附给(roal,message)变量,通过roal判断把message传入那个列表,是段落的结束就创建文件,把容器内容写入对应的文件里,刷新并关闭流文件,并把容器初始化,迭代器进行迭代
  3. 关闭jock.txt流文件

3.1 代码

# 打开文件
path = r'F:/jock/'
demo = open(path+'jock.txt','r',encoding = 'utf-8')
jia = []
yi = []
count = 1

# 判断是否重新创建文件
for echo_lines in demo:
    if echo_lines[0:3] != '===':
        (roal,message) = echo_lines.split(':',1)
        if roal == '甲':
            jia.append(message)
        if roal == '乙':
            yi.append(message)

    else:
        # 文件命名
        jia_file_name = '甲_' + str(count) + '.txt'
        yi_file_name = '乙_' + str(count) + '.txt'
        # 打开文件-w权限
        jia_file = open(path + jia_file_name,'w',encoding='utf-8')
        yi_file = open(path + yi_file_name,'w',encoding='utf-8')
        #数据写入
        jia_file.writelines(jia)
        yi_file.writelines(yi)
        # 把缓存区数据存进文件
        jia_file.flush()
        yi_file.flush()
        # 关闭资源
        jia_file.close()
        yi_file.close()
        # 容器重新初始化
        jia = []
        yi = []
        count += 1


# 关闭jock.txt流文件
demo.close()

3.2 效果显示

生成八个文件
在这里插入图片描述
每个文件与问题描述相符
在这里插入图片描述

3.3 封装成函数

# 把创建文件和写入文件封装成函数
def wirte_file():
    # 文件命名
    jia_file_name = '甲_' + str(count) + '.txt'
    yi_file_name = '乙_' + str(count) + '.txt'
    # 打开文件-w权限
    jia_file = open(path + jia_file_name,'w',encoding='utf-8')
    yi_file = open(path + yi_file_name,'w',encoding='utf-8')
    #数据写入
    jia_file.writelines(jia)
    yi_file.writelines(yi)
    # 把缓存区数据存进文件
    jia_file.flush()
    yi_file.flush()
    # 关闭资源
    jia_file.close()
    yi_file.close()

    
# 打开文件
path = r'F:/jock/'
demo = open(path+'jock.txt','r',encoding = 'utf-8')
jia = []
yi = []
count = 1

# 判断是否重新创建文件
for echo_lines in demo:
    if echo_lines[0:3] != '===':
        (roal,message) = echo_lines.split(':',1)
        if roal == '甲':
            jia.append(message)
        if roal == '乙':
            yi.append(message)

    else:
    	# 调用函数
        wirte_file()
        # 容器重新初始化
        jia = []
        yi = []
        count += 1


# 关闭jock.txt流文件
demo.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值