#打开文件、读取文件 ftele1=open("TeleAddressBook.txt","rb") ftele2=open("EmailAddressBook.txt","rb") ftele1.readline()#跳过第一行表头 ftele2.readline() lines1=ftele1.readlines() lines2=ftele2.readlines() print(lines1) #建立空列表用于存放姓名,电话,邮箱信息 list1_name=[] list1_tele=[] list2_name=[] list2_email=[] #获取TeleAddressBook.txt中的信息 for line in lines1: #获取第一个文件中的姓名和电话信息 elements=line.split()#用split()方法获得出tab空格键分隔出的姓名和电话信息 list1_name.append(str(elements[0].decode('gbk'))) list1_tele.append(str(elements[1].decode('gbk'))) print(list1_name) print(list1_tele) #获取EmailAddressBook.txt中的信息 for line in lines2: elements=line.split() list2_name.append(str(elements[0].decode('gbk'))) list2_email.append(str(elements[1].decode('gbk'))) print(list2_name) print(list2_email) #生成新的数据 lines=[] lines.append('姓名\t 电话\t 邮箱\n')#建立表头 #按索引方式遍历姓名列表1 for i in range(len(list1_name)): 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中 s+='\n' else: s='\t'.join([list1_name[i],list1_tele[i],str(' ----- ')]) #如果姓名列表1中的姓名在姓名列表2中未出现,则直接将列表1中的姓名和电话存储到字符串s中 s+='\n' lines.append(s)#将字符串s添加到合并列表lines中 #处理列表2中剩余的姓名 for i in range(len(list2_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) #将新生成的合并数据一次性写入一个新文件中 ftele2=open('AddressBook.txt','w') ftele2.writelines(lines) #并闭文件 ftele2.close() ftele1.close() print("The addressbooks are merged!")