代码如下:
TeleAdress.txt
合并后的Address.txt
def main():
ftele2=open('TeleAddressBook.txt','rb')
ftele1=open('EmailAddressBook.txt','rb')
ftele1.readline()#跳过文件1第一行
ftele2.readline()#跳过文件2第一行
lines1=ftele1.readlines();#读取文件
lines2=ftele2.readlines();
#创建字典
dic1={}
dic2={}
#将信息读入字典
for line in lines1:
elements=line.split()
dic1[elements[0]]=str(elements[1].decode('gbk'))
for line in lines2:
<span style="white-space:pre"> </span>elements=line.split()
dic2[elements[0]]=str(elements[1].decode('gbk'))
#创建新列表
lines=[]
#加入表头
lines.append('姓名\t 电话\t 邮箱\n')
#遍历字典一,将二中与一种共有的姓名合并,这里element[1]为姓名
for key in dic1:
s=''
if key in dic2.keys():
s='\t'.join([str(key.decode('gbk')),dic1[key],dic2[key]])
s+='\n'
else:
s='\t'.join([str(key.decode('gbk')),dic1[key],str('------')])
s+='\n'
lines.append(s)#将合并的信息加入lines末尾,每次循环执行一次
#遍历字典二,将二中与一不重合的姓名放入lines
for key in dic2:
s=''
if key not in dic1.keys():
s='\t'.join([str(key.decode('gbk')),str("-----"),dic2[key]])
s+='\n'
lines.append(s)
#打开或创建文件3为写模式
ftele3=open("AddressBook.txt",'w')
#写入lines3
ftele3.writelines(lines)
#关闭文件
ftele3.close()
ftele1.close()
ftele2.close()
#执行完毕
print("执行完毕")
if __name__=="__main__":
main()
EmailAddress.txt
姓名 邮箱
王颐笳 57320009@qq.com
李斯 12211212@qq.com
王五 949495968@qq.com
桑迪 wqweqe@163.com
TeleAdress.txt
姓名 电话号码
王颐笳 13691177890
张三 13529293939
李斯 15811589981
桑迪 13010026896
合并后的Address.txt
姓名 电话 邮箱
王颐笳 57320009@qq.com 13691177890
李斯 12211212@qq.com 15811589981
王五 949495968@qq.com ------
桑迪 wqweqe@163.com 13010026896
张三 ----- 13529293939