'
利用字典将两个通讯录文本合并为一个文本' 'gbk是用来将中文写入文本,防止乱码' ftele2=open('teleaddressbook.txt','rb') ftele1=open('emailaddressbook.txt','rb') ftele3=open('addressbook.txt','w') ftele1.readline()#跳过第一行表头 ftele2.readline()#跳过第一行表头 lines1=ftele1.readlines()#读取emailaddressbook.txt中的数据放入lines1列表中 lines2=ftele2.readlines() #定义两年字典存放两年地址文件中的内容 dic1={} dic2={} for line in lines1:# 获取第一个文本中的姓名和电话信息 elements=line.split()#提取姓名和电话信息 print(elements) #将文本读出来的bytes(二进制类型)转换为str类型,并为字典增加一个数据项 dic1[elements[0]]=str(elements[1].decode('gbk')) #elements[0]为字典的键, elements[1]为字典的值 for line in lines2:#获取第二个文本中的姓名和邮件地址信息 elements=line.split() dic2[elements[0]]=str(elements[1].decode('gbk')) ############ 开始处理########### lines=[] lines.append('姓名\t 邮箱\t 电话\n') 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) 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) #写入addressbook.txt ftele3.writelines(lines) #关闭打开的文件 ftele3.close() ftele2.close() ftele1.close() """为字典增加一项的方法不太理解,可以看以下实例: >>> a={'日本': 'Japan','美国':'America'} >>> a {'日本': 'Japan', '美国': 'America'} >>> a['中国']='China' >>> a {'日本': 'Japan', '美国': 'America', '中国': 'China'} """