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 sqlobject(mysql)中文乱码解决方法
Nov 14 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
python中偏函数partial用法实例分析
Jul 08 Python
浅述python中深浅拷贝原理
Sep 18 Python
python使用PyQt5的简单方法
Feb 27 Python
Django如何将URL映射到视图
Jul 29 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python环境搭建过程从安装到Hello World
Feb 05 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中实现中文字符进制转换原理分析
2011/12/06 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
详解PHP PDO简单教程
2019/05/28 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
Python 登录网站详解及实例
2017/04/11 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
马耳他航空公司官方网站:Air Malta
2019/05/15 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
学校门卫管理制度
2014/01/30 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
会计专业自荐书
2014/07/08 职场文书
新农村建设汇报材料
2014/08/15 职场文书
出售房屋委托书范本
2014/09/24 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
2015年派出所工作总结
2015/04/24 职场文书
2015年度招聘工作总结
2015/05/28 职场文书