|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己完整地编写了一遍txt文件分割保存的程序
任务描述:
将文件(record.txt)中的数据进行分割并按照以下规律保存起来:
小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)
小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)
文件中总共有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个文件(提示:文件中不同的对话间已经使用“==========”分割)
1.实现方法一(直接编程)
- f = open('E:/python example/record.txt','rt') # 打开文件
- 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)
- if role == '小客服':
- girl.append(line_spoken)
- else: #段落结束,需要将分割的字符串结果赋给相应的文件,即文件保存操作。
-
- file_boy_name = 'E:/python example/'+'boy_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\boy_*.txt 文件名
- file_girl_name ='E:/python example/'+ 'girl_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\girl_*.txt 文件名
-
- fboy = open(file_boy_name,'xt') # 新建boy_*.txt
- fgirl = open(file_girl_name,'xt') # 新建girl_*.txt
- fboy.writelines(boy) # 将分割的内容写入boy_*.txt
- fgirl.writelines(girl) # 将分割的内容写入girl_*.txt
- fboy.close() # 关闭boy_*.txt
- fgirl.close() # 关闭girl_*.txt
- boy = [] #清空分割结果
- girl = []
- count = count + 1 # 段落数加一
- # 由于record.txt文件最有一段不是以‘======’结尾,所以第三段只是进行了字符串分割,并没有创建boy_3.txt和girl_3.txt文件。
- # 所以还得再加一部分文件保存操作。
- file_boy_name = 'E:/python example/'+'boy_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\boy_*.txt 文件名
- file_girl_name ='E:/python example/'+ 'girl_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\girl_*.txt 文件名
-
- fboy = open(file_boy_name,'xt') # 新建boy_*.txt
- fgirl = open(file_girl_name,'xt') # 新建girl_*.txt
- fboy.writelines(boy) # 将分割的内容写入boy_*.txt
- fgirl.writelines(girl) # 将分割的内容写入girl_*.txt
- fboy.close() # 关闭boy_*.txt
- fgirl.close() # 关闭girl_*.txt
- #至此结束
复制代码
2.实现方法二(函数解决)
- #以下采用两个函数,
- #一个是文本分割函数split_txt(f)
- #一个是保存文件函数save_file(boy,girl,count)
- def split_txt(f):
- 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)
- if role == '小客服':
- girl.append(line_spoken)
- else: #段落结束,需要将分割的字符串结果赋给相应的文件,即文件保存操作。
-
- save_file(boy,girl,count)
- count += 1 #开始下一个段落
- boy = [] #清空上一次文本分割结果
- girl = []
- # 由于record.txt文件最有一段不是以‘======’结尾,所以第三段只是进行了字符串分割,并没有创建boy_3.txt和girl_3.txt文件。
- # 所以还得再加一部分文件保存操作。
- save_file(boy,girl,count)
- def save_file(boy,girl,count):
-
- #file_boy_name = '%s%c%d.txt' %('E:/python example/小甲鱼','_',count)
- #file_girl_name = '%s%c%d.txt' %('E:/python example/小客服','_',count)
- file_boy_name = 'E:/python example/'+'boy_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\boy_*.txt 文件名
- file_girl_name ='E:/python example/'+ 'girl_'+str(count)+'.txt' # 路径+文件名:E:\\python example\\girl_*.txt 文件名
- fboy = open(file_boy_name,'xt') # 新建boy_*.txt
- fgirl = open(file_girl_name,'xt') # 新建girl_*.txt
- fboy.writelines(boy) # 将分割的内容写入boy_*.txt
- fgirl.writelines(girl) # 将分割的内容写入girl_*.txt
- fboy.close() # 关闭boy_*.txt
- fgirl.close() # 关闭girl_*.txt
-
-
- # 有了以上两个函数后,整个程序就简练多了。
- f = open('E:/python example/record.txt','rt') # 打开文件
- split_txt(f)
- f.close
- #至此结束
复制代码
|
评分
-
查看全部评分
|