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


    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('33[32;1mPlease input the query string:33[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] + '33[32;1m%s33[0m' % query + k[index + len(query):],v    #这里会有用户输入的内容进行颜色加深
                match_counter += 1
            else:
                str_v = ' '.join(v)  #将列表中的元素连接为字符串
                index = str_v.find(query) #方法如上面查找key值一样
                if index != -1:
                    print k,str_v[:index] + '33[32;1m%s33[0m' % query + str_v[index + len(query):]
                    match_counter += 1
     
        print 'Matched 33[31;1m%s33[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!
  • 相关阅读:
    手动安装vue-devtools
    redis随记
    JS时间格式化
    360自动抢票还不够,几行js代码设置无人值守
    HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
    android发编译
    asprise-ocr-api-sample 高价收破解版64 32位
    (16)集合操作
    (15)字典操作
    (14)字符串
  • 原文地址:https://www.cnblogs.com/weiman3389/p/6044658.html
Copyright © 2020-2023  润新知