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基于windows平台锁定键盘输入的方法
Mar 05 Python
在Python中操作字典之fromkeys()方法的使用
May 21 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
如何用python整理附件
May 13 Python
python SMTP实现发送带附件电子邮件
May 22 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Python闭包的定义和使用方法
Apr 11 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 获取客户端的真实ip
2009/11/30 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
JavaScript对象模型-执行模型
2008/04/28 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
python数组过滤实现方法
2015/07/27 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
函授大专自我鉴定
2013/11/01 职场文书
英语专业推荐信
2013/11/16 职场文书
人力资源管理毕业生自荐信
2013/11/21 职场文书
结婚喜宴家长答谢词
2014/01/15 职场文书
大学军训感言400字
2014/03/11 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
企业宣传稿范文
2015/07/23 职场文书
Python进行区间取值案例讲解
2021/08/02 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Python 文字识别
2022/05/11 Python