【Python之旅】第二篇(五):基于列表、字典和元组的员工信息处理接口

简介:

1.基本需求

    编写一个查询员工信息表的程序,实现如下功能:

(1)让用户输入不小于3个字符查询员工信息

(2)通过员工号或员工个人信息可以精确或模糊查询到员工信息

(3)输出员工信息




2.实现代码与注释

   首先提供员工信息的txt文件:

1
2
3
4
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day3$ more student_info.txt 
stu1101 mingjia.xu  275896019 @qq.com  263  SystemAdmin  18810404260
stu1102 Yangjiansong jason@s156.com A8music SystemAdmin  13601247960
stu1103 zouxinkai zouxinkai_2006@ 126 .com jishubu systemadmin  1861214111

    基于上述需求,利用列表、字典和元组的相关处理函数,编写如下程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
staff_dic = {}    #从文件中读取员工信息,并作为字典处理
f = file( 'student_info.txt' )
for  line  in  f.xreadlines():
     stu_id, stu_name, mail, company, title, phone = line.split() #取文件一行中每一列元素
     staff_dic[stu_id] = [stu_name, mail, company, title, phone]   #key值对应的Value值为一列表
     
while  True:
     query = raw_input( '\033[32;1mPlease input the query string:\033[0m' ).strip() 
     if  len(query) <  3 :    #如果输入查询的字符少于 3 ,则要求重新输入
         print  'You have to input at least 3 letters to query!'
         continue
     
     match_counter =  0  #计数器,判断是否有匹配到员工信息
     for  k,v  in  staff_dic.items():    #.items(),key值作为列表中,元组的左元素,key值(这里为列表)则作为右元素
         index = k.find(query) #find()返回查询到字符串的首个字符的索引,找空串返回 0 ,找不到返回- 1
         if  k.find(query) != - 1 :  #如果找到
             print k[:index] +  '\033[32;1m%s\033[0m'  % query + k[index + len(query):],v    #这里会有用户输入的内容进行颜色加深
             match_counter +=  1
         else :
             str_v =  '\t' .join(v)  #将列表中的元素连接为字符串
             index = str_v.find(query) #方法如上面查找key值一样
             if  index != - 1 :
                 print k,str_v[:index] +  '\033[32;1m%s\033[0m'  % query + str_v[index + len(query):]
                 match_counter +=  1
 
     print  'Matched \033[31;1m%s\033[0m records!'  % (match_counter)




3.测试

    基于上述的情况,对可能出现的情况和结果,测试如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Please input the query string:stu1101    ===>对员工号(键值)精确查询
stu1101 [ 'mingjia.xu' '275896019@qq.com' '263' 'SystemAdmin' '18810404260' ]
Matched  1  records!
 
Please input the query string:stu    ===>对员工号(键值)模糊查询
stu1103 [ 'zouxinkai' 'zouxinkai_2006@126.com' 'jishubu' 'systemadmin' '1861214111' ]
stu1102 [ 'Yangjiansong' 'jason@s156.com' 'A8music' 'SystemAdmin' '13601247960' ]
stu1101 [ 'mingjia.xu' '275896019@qq.com' '263' 'SystemAdmin' '18810404260' ]
Matched  3  records!
 
Please input the query string:kai    ===>对员工信息(value值)模糊查询
stu1103 zouxinkai  zouxinkai_2006@ 126 .com  jishubu systemadmin  1861214111
Matched  1  records!
Please input the query string:zou
stu1103 zouxinkai  zouxinkai_2006@ 126 .com  jishubu systemadmin  1861214111
Matched  1  records!



本文转自 xpleaf 51CTO博客,原文链接:http://blog.51cto.com/xpleaf/1695146,如需转载请自行联系原作者

相关文章
|
4月前
|
开发者 Python
Python列表推导式:优雅与效率的完美结合
Python列表推导式:优雅与效率的完美结合
475 116
|
4月前
|
大数据 开发者 Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
417 109
|
4月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
|
4月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
195 1
|
SQL 关系型数据库 数据库连接
使用python3抓取pinpoint应用信息入库
使用python3通过pinpoint api来获取pinpoint中应用基础信息、上下游链路,并入库
2136 0
|
开发者 索引 Python
实践:如何使用python在网页的表格里抓取信息
实践:如何使用python在网页的表格里抓取信息
292 0
|
数据采集 供应链 机器人
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
602 0
Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
|
定位技术 开发者 Python
Python编程:通过百度地图接口抓取机构的地址和电话信息
Python编程:通过百度地图接口抓取机构的地址和电话信息
749 0
|
Web App开发 Linux iOS开发
用python抓取智联招聘信息并存入excel
用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步作出调整。
1344 0
|
数据采集 JavaScript 定位技术

推荐镜像

更多