文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-01-31 08:07

关注

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


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯