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 del()函数用法
Mar 24 Python
python中常用的九种预处理方法分享
Sep 11 Python
python读取二进制mnist实例详解
May 31 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
在python里从协程返回一个值的示例
Feb 19 Python
python字符串替换re.sub()方法解析
Sep 18 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
python Xpath语法的使用
Nov 26 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生成随机数或者字符串的代码
2008/09/05 PHP
openPNE常用方法分享
2011/11/29 PHP
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
详解基于mpvue的小程序markdown适配解决方案
2018/05/08 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
python numpy中cumsum的用法详解
2019/10/17 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python容器类型公共方法总结
2020/08/19 Python
Pycharm Git 设置方法
2020/09/15 Python
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
英语演讲稿3分钟
2014/04/29 职场文书
读后感作文评语
2014/12/25 职场文书
实习介绍信范文
2015/05/05 职场文书
汶川大地震感悟
2015/08/10 职场文书
学生会主席任命书
2015/09/21 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
nginx共享内存的机制详解
2022/03/21 Servers
关于的python五子棋的算法
2022/05/02 Python