字典练习代码以及运行结果,如图:
利用字典将两个通讯录文本合并为一个文本,‘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()
运行结果: