python3合併兩個文件造成通信錄

學習別人的代碼,學習python語法python

[root@vps student]# cat TeleAddressBook.txt app

姓名 電話ide

李四 13567428765學習

張三 18878972314spa

王五 18273719921vps

陳六 19903210032utf-8

[root@vps student]# cat EmailAddressBook.txt element

姓名 郵箱字符串

張三 12345678@qq.comit

李四 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()
相關文章
相關標籤/搜索