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 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!

python-列表、字典、元组的员工信息处理接口(第二篇(五):基于列表、字典和元组的员工信息处理接口)的更多相关文章

  1. python成长之路【第二篇】:列表和元组

    1.数据结构数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence) ...

  2. Python 项目实践二(生成数据)第二篇之随机漫步

    接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...

  3. Python 项目实践二(生成数据)第二篇

    接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...

  4. python应用:爬虫框架Scrapy系统学习第二篇——windows下安装scrapy

    windows下安装scrapy 依次执行下列操作: pip install wheel pip install lxml pip install PyOpenssl 安装Microsoft visu ...

  5. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(二)

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...

  6. Python自动化 【第二篇】:Python基础-列表、元组、字典

    本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库, ...

  7. Python之路【第二篇】: 列表、元组、字符串、字典、集合

    本文内容: -------------------------------------- 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表(list) 序列是Pyt ...

  8. Python第五天 列表练习 元组类型 字典类型 小购物车练习

    # 反转 reverse# l=['lili','asdf','qwer','80000']# l.reverse()# print(l) # ['80000', 'qwer', 'asdf', 'l ...

  9. Python 第二篇:python字符串、列表和字典的基本操作方法

    本文基于python 3.5.1 python常见的数据类型有字串.列表.元组.字典等,本文将详细介绍每一种数据类型的操作方法. 一:str字串的操作方法: 1.capitalize()-->  ...

随机推荐

  1. 解决win8与VC++6.0不兼容问题

    找到VC++6.0安装文件夹Bin下的MSDEV.EXE程序 将MSDEV名字改为MSDEV1(或MSDEV2,3...) 右击改好的MSDEV1,打开属性面板,选择兼容性,勾上“在兼容模式下运行”, ...

  2. MVC身份验证及权限管理

    MVC自带的ActionFilter 在Asp.Net WebForm的中要做到身份认证微软为我们提供了三种方式,其中最常用的就是我们的Form认证,需要配置相应的信息.例如下面的配置信息: < ...

  3. codeforces Minesweeper 1D

    题意:就是挖地雷,给你一个字符串,‘*’代表地雷,‘1’代表在它的周围有1个地雷,‘2’代表在左右都有个地雷,‘?’代表不确定是不是地雷,可以是1,2,*,问你最后有几种方式确定所有的的地雷. 思路: ...

  4. ios入门之c语言篇——基本函数——3——判断日期是一年的第几天

    3.判断日期是一年的第几天 参数返回值解析: 参数: y:int,年份: m:int,月份 d:int,日期 返回值: sum:传入日期是当年的第几天: 函数解析: leapyear(y);判断y是不 ...

  5. 工作那些事(二)应聘时填写个人信息ABCD

    先看看都有那些: 公司A: 填写来访人员登记表(在前台的那种),内容包括: 姓名.时间.电话.职位. 公司B: 填写来访人员登记表(在前台的那种),内容包括: 姓名.时间.电话.身份证号码().事由( ...

  6. 【HDOJ】1601 Galactic Import

    Dijkstra. /* 1601 */ #include <cstdio> #include <cstring> #include <cstdlib> #defi ...

  7. JFS 文件系统概述及布局分析

    JFS 文件系统概述及布局分析 日志文件系统如何缩短系统重启时间 如果发生系统崩溃,JFS 提供了快速文件系统重启.通过使用数据库日志技术,JFS 能在几秒或几分钟之内把文件系统恢复到一致状态,而非日 ...

  8. 【转】Java运算符优先级

    原文网址:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 ...

  9. 动态规划(决策单调优化):BZOJ 4518 [Sdoi2016]征途

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 532  Solved: 337[Submit][Status][ ...

  10. cf602A Two Bases

    A. Two Bases time limit per test 1 second memory limit per test 256 megabytes input standard input o ...