零基础学Python语言 字典实例二

it2022-05-05  197

同 前 , 有 电 话 簿 TeleAddressBook 和 邮 箱 地 址 簿EmailAddressBook两个文件,使用字典结构将其合并为一个完整的AddressBook文件

#利用字典将两个通讯录文本合并为一个文本 def main(): ftele1=open('TeleAddressBook.txt','wt')#以文本写方式打开,只能写文件, 如果文件不存在,创建该文件 ftele2=open('EmailAddressBook.txt','wt')#如果文件已存在,先清空,再打开文件 ftele1.writelines(["姓名","\t","电话","\n","张三","\t","13189542629","\n"])#写入数据 ftele2.writelines(["姓名","\t","邮箱","\n","张三","\t","1948422782@qq.com","\n"])#写入数据 ftele1=open('TeleAddressBook.txt','rb')#以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常 ftele2=open('EmailAddressBook.txt','rb')#以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常 ftele1.readline()#跳过第一行 ftele2.readline()#跳过第一行 lines1 = ftele1.readlines() lines2 = ftele2.readlines() dic1 = {} #字典方式保存 dic2 = {}#建立空字典dic1, dic2存储姓名、 电话和邮箱 for line in lines1:#获取第一个本文中的姓名和电话信息 elements = line.split() #将文本读出来的bytes转换为str类型 dic1[elements[0]] = str(elements[1].decode('gbk')) print(dic1) for line in lines2:#获取第二个本文中的姓名和电话信息 elements = line.split() dic2[elements[0]] = str(elements[1].decode('gbk')) ###开始处理### lines = [] lines.append('姓名\t 电话 \t\t 邮箱\n') for key in dic1: s= '' if key in dic2.keys(): s = '\t'.join([str(key.decode('gbk')), dic1[key], dic2[key]])#返回键key对应的值value 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) ftele3 = open('AddressBook.txt', 'w') ftele3.writelines(lines) ftele3.close() ftele1.close() ftele2.close() print("The addressBooks are merged!") if __name__ == "__main__": main()

 


最新回复(0)