Python实现将两个表格(txt格式)合并

Python实现将两个表格(txt格式)合并


功能:将两个txt格式的表格进行合并,如下图所示:

合并前是一个电话本和一个邮箱本,里面姓名有部分重复部分不同。


合并后下面这个样子

## 代码在这里 ##
----
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/11/19 11:23
# @Author  : liuxiang
# @Site    : 
# @File    : AddressBook.py
# @Software: PyCharm
# @Function: 将电话号码本和邮箱本合并

ftele1 = open("TeleAddressBook.txt",'rb')
ftele2 = open("EmailAddressBook.txt",'rb')

f1line = ftele1.readline()#跳过第一行表头
f2line = ftele2.readline()

lines1 = ftele1.readlines()
lines2 = ftele2.readlines()

list1_name = []
list1_tele = []
list2_name = []
list2_email = []
lines = ["姓名 \t 电话 \t 邮箱 \n"]

for line in lines1:
    elements = line.split()
    list1_name.append(str(elements[0].decode("utf-8")))
    list1_tele.append(str(elements[1].decode("utf-8")))
for line in lines2:
    elements = line.split()
    list2_name.append(str(elements[0].decode("utf-8")))
    list2_email.append(str(elements[1].decode("utf-8")))

for i in range(len(list1_name)):#按索引方式遍历姓名列表1
    s = ''
    if list1_name[i] in list2_name:
        j = list2_name.index(list1_name[i])#按姓名列表1中的姓名找到姓名列表2中的对应索引
        s = '\t'.join([list1_name[i],list1_tele[i],list2_email[j]])
        s += '\n'
    else:
        s = '\t'.join([list1_name[i],list1_tele[i],str('----')])
        s += '\n'
    lines.append(s)

#处理姓名列表2中剩余的姓名
for i in range(len(list1_name)):
    s = ''
    if list2_name[i] not in list1_name:
        s = '\t'.join([list2_name[i], str('----'), list2_email[i]])
        s += '\n'
    lines.append(s)

ftele3 = open("AddressBook.txt",'w')
ftele3.writelines(lines)

ftele3.close()
ftele2.close()
ftele1.close()

print("合并已完成")

你可能感兴趣的:(python)