合并两个地址本

mac2025-09-02  11

读文件,存进字典

遍历字典进行拼接

存进新文件

数据结构:字典{键:值} : {姓名:电话} {姓名:邮箱}

用到的方法:

读文件方法:

1、file1 = open(‘phone_num.txt’,‘r’) lines1 = file1.readlines()

2、 with open(‘email.txt’,‘r’) as file2: lines2 = file2.readlines() 写文件方法:

with open (‘new_address.txt’,‘w’) as newfile: newfile.writelines(lines)

切割字符串:

content = line.split(’,’)

去除字符串两端空格:

line = line.strip()

join拼接字符串: line = line+ ‘\t’.join([’%10s’%key,’%10s’%ad_book1[key],’%10s’%ad_book2[key]])

# -*- coding=UTF-8 -*- # coding:utf-8 ad_book1={} ad_book2={} def read_ad(): file1 = open('phone_num.txt','r') lines1 = file1.readlines() for line in lines1: line = line.strip()#去两端空白 ad_book1[line.split(',')[0]]=line.split(',')[1]#切割并存入字典 file1.close()#手动关闭文件流 #读文件的第二种方法,自带上下文管理,会自动关闭文件流 with open('email.txt','r') as file2: lines2 = file2.readlines() for line in lines2: line = line.strip() content = line.split(',') ad_book2[content[0]] = content[1] def merge_ad(): lines =[] header = '%10s'%'姓名\t'+'%10s'%'电话\t'+'%10s'%'邮箱\n\n' lines.append(header) for key in ad_book1:#以字典名字进行遍历,默认迭代的是字典的键,等效于for key in ad_book1.keys() line = '' if key in ad_book2.keys(): line = line+ '\t'.join(['%10s'%key,'%10s'%ad_book1[key],'%10s'%ad_book2[key]]) line+='\n' else: line = line+ '\t'.join(['%10s'%key,'%10s'%ad_book1[key],'%10s'%'*********']) line =line+'\n' lines.append(line) for key in ad_book2: line = '' if key not in ad_book1.keys(): line = line+ '\t'.join(['%10s'%key,'%10s'%'*********','%10s'%ad_book2[key]]) line =line+'\n' lines.append(line) with open ('new_address.txt','w') as newfile: #w模式:若文件不存在就先创建,若存在,清除掉文件,直接从头写 newfile.writelines(lines) read_ad() merge_ad() for item in ad_book1: print(item.decode('utf-8')+' : '+ad_book1[item].decode('utf-8')) print('') for item in ad_book2: print(item.decode('utf-8')+' : '+ad_book2[item].decode('utf-8')) 张三 : 123456778 李四 : 987456112 张三 : 111233@aas.com 手打 : sdfds@aa.com with open('new_address.txt','r') as file2: lines2 = file2.readlines() for item in lines2: print(item.decode('utf-8')) 姓名 电话 邮箱 张三 123456778 111233@aas.com 李四 987456112 ********* 手打 ********* sdfds@aa.com
最新回复(0)