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之使用Python查询更新数据库
Nov 25 Python
python对数组进行反转的方法
May 20 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
把django中admin后台界面的英文修改为中文显示的方法
Jul 26 Python
python序列类型种类详解
Feb 26 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
python IP地址转整数
Nov 20 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 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/08/02 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php显示时间常用方法小结
2015/06/05 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
Python中的装饰器用法详解
2015/01/14 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python实现多线程的两种方式分析
2018/08/29 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
有个性的自我评价范文
2013/11/15 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
环保建议书400字
2014/05/14 职场文书
依法行政工作汇报
2014/10/28 职场文书
求职信格式范文
2015/03/19 职场文书
信用卡工资证明范本
2015/06/19 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书