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 相关文章推荐
Cpy和Python的效率对比
Mar 20 Python
python获取目录下所有文件的方法
Jun 01 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
django 发送手机验证码的示例代码
Apr 25 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
Jun 26 Python
使用TensorFlow实现简单线性回归模型
Jul 19 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
python 从list中随机取值的方法
Nov 16 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
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
jquery密码强度校验
2015/12/02 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
Python socket编程实例详解
2015/05/27 Python
Python中操作符重载用法分析
2016/04/29 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Django中间件实现拦截器的方法
2018/06/01 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python实现远程控制电脑
2019/05/23 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
个人求职自荐信范文
2014/06/20 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android