Python (七)字典补充

来源:互联网 发布:英语对话软件 编辑:程序博客网 时间:2024/05/16 04:46

字典练习代码以及运行结果,如图:

利用字典将两个通讯录文本合并为一个文本,‘gbk'是用来将中文写入文本,防止乱码情况发生。

文本文件数据如图:


代码如下:

# dictionary2.py# encoding=utf-8# 使用字典结构合并新地址def main():    ftele2=open('TeleAddressBook.txt','rb')    ftele1=open('EmailAddressBook.txt','rb')    ftele2.readline()#跳过第一行    ftele1.readline()    lines1=ftele1.readlines()    lines2=ftele2.readlines()    dic1 = {}   # 字典方式保存    dic2 = {}    for line in lines1:#获取第一个文本中的姓名和电话信息        elements = line.split()        #将文本读出来的bytes转换为str类型        dic1[elements[0]] = str(elements[1].decode('gbk'))    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)    ftele3 = open('AddressBook.txt','w')    ftele3.writelines(lines)    ftele3.close()    ftele2.close()    ftele1.close()    if __name__ == '__main__':    main()                                

运行结果: