首页 > 代码库 > python3合并两个文件形成通讯录
python3合并两个文件形成通讯录
学习别人的代码,学习python语法
[root@vps student]# cat TeleAddressBook.txt
姓名 电话
李四 13567428765
张三 18878972314
王五 18273719921
陈六 19903210032
[root@vps student]# cat EmailAddressBook.txt
姓名 邮箱
张三 12345678@qq.com
李四 abcdefg@163.com
王五 qwertyg@sina.com
hello 1111111@dd.com
[root@vps student]# cat AddressBook.txt
姓名 电话 邮箱
李四13567428765abcdefg@163.com
张三1887897231412345678@qq.com
王五18273719921qwertyg@sina.com
陈六19903210032------------
hello------------1111111@dd.com
#!/usr/bin/env python3 #-*- coding:utf-8 -*- def main(): ftele1 = open("TeleAddressBook.txt",‘r‘) ftele2 = open("EmailAddressBook.txt",‘r‘) ftele1.readline() ftele2.readline() lines1 = ftele1.readlines() lines2 = ftele2.readlines() ‘‘‘ #读取文件 >>> ftele1 = open("TeleAddressBook.txt",‘r‘) #去掉文本标题行,也就是跳过第一行 >>> ftele1.readline() ‘姓名 电话\n‘ #readlines循环读取每一行,构成一个列表 #此处切记:如果文本里面有空行,lines1列表中就会有‘\n‘ .后面列表append的时候就会报错 >>> lines1 = ftele1.readlines() >>> lines1 [‘李四 13567428765\n‘, ‘张三 18878972314\n‘, ‘王五 18273719921\n‘, ‘陈六 19903210032\n‘] >>> >>> lines1[0] ‘李四 13567428765\n‘ #通过对字符串切片形成列表,取值 >>> lines1[0].split() [‘李四‘, ‘13567428765‘] >>> elements = lines1[0].split() >>> elements[0] ‘李四‘ ‘‘‘ list1_name = [] list1_tele = [] list2_name = [] list2_email = [] #获取第一个文本中的姓名和电话信息 for line in lines1: elements = line.split() #此处列表添加有个隐患:文本文件中一定不能有空行,负责append会报错 #IndexError: list index out of range list1_name.append(str(elements[0])) list1_tele.append(str(elements[1])) for line in lines2: elements = line.split() list2_name.append(str(elements[0])) list2_email.append(str(elements[1])) lines = [] lines.append(‘姓名\t 电话\t 邮箱\t \n‘) #遍历列表匹配一样姓名的用户,构造字符串 for i in range (len(list1_name)): s = ‘‘ if list1_name[i] in list2_name: j = list2_name.index(list1_name[i]) s = ‘\t‘.join([list1_name[i],list1_tele[i],list2_email[j]]) s += ‘\n‘ else: s = ‘\t‘.join([list1_name[i],list1_tele[i],str(‘------------‘)]) s += ‘\n‘ lines.append(s) #处理2中剩余的用户 for i in range(len(list2_name)): s = ‘‘ if list2_name[i] not in list1_name: s = ‘\t‘.join([list2_name[i],str(‘------------‘),list2_email[i]]) s += ‘\n‘ lines.append(s) #写入文件 ftele3 = open(‘AddressBook.txt‘,‘w‘) ftele3.writelines(lines) ftele3.close() ftele1.close() ftele2.close() print("game over") if __name__ == ‘__main__‘: main()
本文出自 “拔电源的运维空间” 博客,请务必保留此出处http://zhangdj.blog.51cto.com/9210512/1882949
python3合并两个文件形成通讯录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。