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