python-列表、字典、元组的员工信息处理接口(第二篇(五):基于列表、字典和元组的员工信息处理接口)
Python之旅】第二篇(五):基于列表、字典和元组的员工信息处理接口
摘要: 1.基本需求 编写一个查询员工信息表的程序,实现如下功能: (1)让用户输入不小于3个字符查询员工信息 (2)通过员工号或员工个人信息可以精确或模糊查询到员工信息 (3)输出员工信息 2.实现代码与注释 首先提供员工信息的txt文件: 1 2 3 4 xpleaf@...
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 18810404260stu1102 Yangjiansong jason@s156.com A8music SystemAdmin 13601247960stu1103 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 pythonstaff_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 1861214111Matched 1 records!Please input the query string:zoustu1103 zouxinkai zouxinkai_2006@126.com jishubu systemadmin 1861214111Matched 1 records! |
python-列表、字典、元组的员工信息处理接口(第二篇(五):基于列表、字典和元组的员工信息处理接口)的更多相关文章
- python成长之路【第二篇】:列表和元组
1.数据结构数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence) ...
- Python 项目实践二(生成数据)第二篇之随机漫步
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...
- Python 项目实践二(生成数据)第二篇
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...
- python应用:爬虫框架Scrapy系统学习第二篇——windows下安装scrapy
windows下安装scrapy 依次执行下列操作: pip install wheel pip install lxml pip install PyOpenssl 安装Microsoft visu ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(二)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- Python自动化 【第二篇】:Python基础-列表、元组、字典
本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库, ...
- Python之路【第二篇】: 列表、元组、字符串、字典、集合
本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...
- Python第五天 列表练习 元组类型 字典类型 小购物车练习
# 反转 reverse# l=['lili','asdf','qwer','80000']# l.reverse()# print(l) # ['80000', 'qwer', 'asdf', 'l ...
- Python 第二篇:python字符串、列表和字典的基本操作方法
本文基于python 3.5.1 python常见的数据类型有字串.列表.元组.字典等,本文将详细介绍每一种数据类型的操作方法. 一:str字串的操作方法: 1.capitalize()--> ...
随机推荐
- 【python常用模块】os.path
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...
- SVN版本回滚~
如果你在svn上对文件进行编辑作了修改,想撤销,那么有两种方法可以还原:1) svn revert <yourfile>2) 手动删除该文件,重新执行svn up(rm <yourf ...
- glide简介
golang包管理工具glide简介 golang包管理工具glide简介 前言 golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情.在这里我感受到了其中一 ...
- 10条PHP高级技巧
1.使用一个SQL注射备忘单 一个基本的原则就是,永远不要相信用户提交的数据. 另一个规则就是,在你发送或者存储数据时对它进行转义(escape). 可以总结为:filter input, escap ...
- 单元测试不是梦,Android+PowerMock系列(1) —— 在Eclipse里搭建测试环境
单元测试不好搞阿,虽然从TDD角度出发,可测性强的代码很大程度上就代表着好的设计,但是有些情况也是没办法的,比如单例模式,比如Static方法,比如Final类,传统的Mock技术是没办法解决这些问题 ...
- nginx+uwsgi+WSGI applications
uwsgi一个专业的部署运用的工具,不仅能够部署Python运用,还能够部署其他运用比如Perl,Ruby等 uWSGI 安装: pip install uwsgi WSGI application( ...
- MATLAB中多行注释的三种方法
MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...
- maven jetty plugin
转载:http://blog.163.com/xueling1231989@126/blog/static/1026408072013101311395492/ 前言: 在 maven 下测试调试时, ...
- 给java中的System.getProperty添加新的key value对
由于系统被格了,所以,现在的java项目配置不对,代码里面的配置类调用了一个System.getProperty("env")发现找不到该变量的值,以前一直能找到的. 其实就是以前 ...
- 权重随机算法的java实现
一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...