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

发布时间:2019-09-25 08:23:39编辑:auto阅读(1744)

    学习别人的代码,学习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()


关键字