#!/bin/env python
#coding=utf-8
def query():                    ##定义函数
    dic = {}                    ##定义一个空字典  
    f = file('stu_info.txt')    ##打开员工信息表
    for i in f.xreadlines():    
        number,name,mail,bumen,Admin,phone=i.split()               ##将表内每一列的内容注释
        list1=[name,mail,bumen,Admin,phone]                        ##除员工序号外的其余信息放入一个列表
        dic.setdefault(number,list1)                               ##将员工序号作为key,对应的列表为value放入字典里
    f.close()                                                      ##关闭f
    while True:
        stu_id = raw_input('\033[32;1mPlease in put stu_id:\033[0m\n')    ##输入查询的关键词(绿色字体)
        if len(stu_id) < 3:                                               ##查询长度低于3时重新输入
            print 'At least 3 length for input stu_id.'
            continue
        match_counter = 0                                                  ##查询结果默认为0
        for k,v in dic.items():                                             
            index = k.find(stu_id)                                         ##find方法,查找关键词是否存在于key中,如果存在,index为第几位开始。如果不存在则为index为-1.
            if index != -1:

                print k[:index]+'\033[32;1m%s\033[0m' %stu_id + k[index + len(stu_id):],v
                                        ##输出查询的员工信息,关键字部分绿色字体
                match_counter +=1       ##查询的结果加1
            else:                       ##如果查询的关键字在value里,不在key里
                str_v = '\t'.join(v)    ##将value从列表里取出,以tab分隔
                index = str_v.find(stu_id)  ##通过find查询
                if index != -1 :        ## 如果存在
                    print k, str_v[:index]+'\033[32;1m%s\033[0m' %stu_id +str_v[index + len(stu_id): ]                           ##输出对应的key,以及所在的value。同样关键字部分用绿色显示
                    match_counter += 1  ##查询结果加一
        print "Matched \033[31;1m%s\033[0m records!"    %match_counter    ##打印总共有几个查询结果

if  __name__ == '__main__':             ##如果name为main则执行。这条命令是该函数只能用作脚本使用,import时,不会执行query()
    query() 
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐