python实现两个文件合并功能


Posted in Python onApril 01, 2018

本文将会分析一个文件合并的程序,并指出在合并文件过程中需要注意的问题。

下面是需要合并的文件示例:

python实现两个文件合并功能

python实现两个文件合并功能

分析思路:

要将两个文件合并,首先要将文件读到内存中,成为列表。再将列表分割,按照类别将数据分开存储,即姓名、电话、邮箱。通过遍历列表1,依次与列表2比较,如果二者有重合的人,那么直接利用 .join([ ])姓名电话邮箱合并到一行,保存到另外一个列表变量里面。二者不重合的人,说明只有列表1中才有,故将此人的邮箱信息用str(‘—?')代替。

经过这次遍历之后,列表1中所有的人和列表2中与列表1中重复的人,都重新整合到了新的列表变量里面。接下来还需要把列表2中特有的人,添加到新的列表变量中。方法是遍历列表2,把与列表1不重合的人取出来保存。

最后要将新的列表变量中的数据写入到新的文件中,并关闭所有文件。

流程图如下:

python实现两个文件合并功能

代码如下:

"""
Created on Fri Aug 4 12:59:36 2017

@author: 13323
"""
# This program can combine two or more files into one file.
def main():
 #firstly open the files
 data1 = open("test_3.txt","rb")
 data2 = open("test_4.txt","rb")

 # read the data in file into list
 data1.readline() #only read one line, skip the first line
 data2.readline() #only read one line, skip the first line
 file1 = data1.readlines() #read all variable into list file1 
 file2 = data2.readlines() #read all variable into list file2
 #print(file1)

 #define particular list to store variable
 file1_name = []
 file1_tel = []
 file2_name = []
 file2_email = []
 #file3 = []

 #split file1 into two part
 for line in file1:
  element = line.split() #line.split(); devide by ' '
  file1_name.append(str(element[0].decode('gbk')))
  file1_tel.append(str(element[1].decode('gbk')))

 #split file2 into two part
 for line in file2:
  element = line.split()
  file2_name.append(str(element[0].decode('gbk')))
  file2_email.append(str(element[1].decode('gbk')))

 # pick up the name in the file1 same as the name in the file2 and combine 
 file3 = []
 for i in range(len(file1_name)):
  s = ''
  if file1_name[i] in file2_name:
   j = file2_name.index(file1_name[i])
   s = '\t'.join([file1_name[i],file1_tel[i],file2_email[j]])
   s += '\n'
  else:
   s = '\t'.join([file1_name[i],file1_tel[i],str("----")])
   s += '\n'
  file3.append(s)

 #pick up the name in the file1 doesn't same as the name in the file2 
 for i in range(len(file2_name)):
  s = ''
  if file2_name[i] not in file1_name:
   s = '\t'.join([file2_name[i],str('----'),file2_email[i]])
   s += '\n'
  file3.append(s)

 #write the data into file3 
 data3 = open("test_5.txt","w")
 data3.writelines(file3)

 #close the file
 data1.close()
 data2.close()
 data3.close()

main()

关键点:

编码与解码
列表合并与拆解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用正则表达式检测密码强度源码分享
Jun 11 Python
详解Python中的装饰器、闭包和functools的教程
Apr 02 Python
win10系统中安装scrapy-1.1
Jul 03 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python变量和数据类型详解
Feb 15 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
python 产生token及token验证的方法
Dec 26 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python中一行和多行import模块问题
Apr 01 #Python
Python对List中的元素排序的方法
Apr 01 #Python
Python去除、替换字符串空格的处理方法
Apr 01 #Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 #Python
python 通过xml获取测试节点和属性的实例
Mar 31 #Python
Python Xml文件添加字节属性的方法
Mar 31 #Python
Python简单生成随机数的方法示例
Mar 31 #Python
You might like
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
python 远程统计文件代码分享
2015/05/14 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Django中的forms组件实例详解
2018/11/08 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python用input输入列表的实例代码
2020/02/07 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
初中女生自我鉴定
2013/12/19 职场文书
预备党员政审材料
2014/02/04 职场文书
书香校园活动方案
2014/02/28 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
运动会三级跳加油稿
2015/07/21 职场文书