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不带重复的全排列代码
Aug 13 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
Python爬虫之正则表达式的使用教程详解
Oct 25 Python
Python 多线程不加锁分块读取文件的方法
Dec 11 Python
Python中一个for循环循环多个变量的示例
Jul 16 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 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
MySQL相关说明
2007/01/15 PHP
php之Memcache学习笔记
2013/06/17 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
浅析python参数的知识点
2018/12/10 Python
Python常用的json标准库
2019/02/19 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
Python中常见的数制转换有哪些
2020/05/27 Python
python如何编写win程序
2020/06/08 Python
Python如何对XML 解析
2020/06/28 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
人民调解员先进事迹材料
2014/05/08 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
骨干教师个人总结
2015/02/11 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP