您的位置:首页 > 编程语言 > Python开发

python3合并两个文件形成通讯录

2016-12-15 11:19 465 查看
学习别人的代码,学习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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file python 通讯录