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实现简单的代理服务器
Jul 25 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
Python清空文件并替换内容的实例
Oct 22 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
python3中sys.argv的实例用法
Apr 24 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
python mongo 向数据中的数组类型新增数据操作
Dec 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
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
JavaScript实现经纬度转换成地址功能
2017/03/28 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
详解如何webpack使用DllPlugin
2018/09/30 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python删除某个字符
2018/03/19 Python
python实现贪吃蛇小游戏
2020/03/21 Python
Python reversed函数及使用方法解析
2020/03/17 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
如何使用Python调整图像大小
2020/09/26 Python
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
存储过程和函数的区别
2013/05/28 面试题
电信营业员自我评价分享
2014/01/17 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
机房搬迁方案
2014/05/01 职场文书
中职生求职信
2014/07/01 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
埃及王子观后感
2015/06/16 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
mysql自增长id用完了该怎么办
2022/02/12 MySQL
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js