# 员工信息表: 完善代码,背下来给代码加注释
column_dic = {'id': 0, 'name': 1, 'age': 2, 'phone': 3, 'job': 4} # 将文件每一列的名字和数字的对应关系
# --条件--筛选
def filter_handler(operate, col): # >, age>22
"""
精心筛选工作
:param opertate: 用户要进行的操作是><= like
:param col: 用户输入的where条件
:return: 被选中的所有行组成的列表,其中每一行都是一个列表
"""
select_lst = [] # 被选中的列表
col, val = col.split(operate) # age,22='>','age>22'
col = col.strip() # age
val = val.strip() # 22
judge = 'int(line_lst[column_dic[col]]) %s int(val)'%operate if operate == '<' or operate == '>' else 'line_lst[column_dic[col]] %s val' %operate
f = open('file', encoding='utf-8')
for line in f:
line_lst = line.strip().split(',') # [id, name, 25, phone, job]
if eval(judge):
select_lst.append(line_lst)
f.close()
return select_lst
# 展示符合条件的员工信息
def get_selected_line(con): # con = 'age>22'
"""
获取所有要查找的行,并将每一行作为一个列表项存储在select_lst中
:param con:
:return: 存储了符合条件的行的列表
"""
if '>' in con:
selected_lst = filter_handler('>', con)
elif '<' in con:
selected_lst = filter_handler('<', con)
elif '=' in con:
selected_lst = filter_handler('==', con.replace('=', '=='))
elif 'like' in con:
selected_lst = filter_handler('in', con)
return selected_lst
# 读取文件 ---将文件中的内容整理
def get_show_lst(col_condition):
"""
获取要展示的列名
:param col_condition: 用户输入的select条件
:return: 列名组成的字典
"""
col_info_lst = col_condition.strip().split('select')
col_info_lst = [col_info_item for col_info_item in col_info_lst if col_info_item.strip()]
if col_info_lst:
col_info = col_info_lst[0].strip()
if '*' == col_info:
return column_dic.keys()
elif col_info:
ret = col_info.split(',')
return [item.strip() for item in ret]
else: print(col_info)
# 读取用户的信息 ---分析信息
def show(selected_lst, show_lst):
"""
展示符合条件的内容
:param selected_lst: 符合条件的行的列表
:param show_lst: 所有要展示的字段
:return: None
"""
for selected_item in selected_lst:
for col in show_lst:
print(selected_item[column_dic[col]], end='')
print()
condition = input(">>>") # 接收用户的指令
# 解析用户的指令
ret = condition.split('where') # ['select name, age', 'age>22']
con = ret[1].strip() # 'age>22'
# 根据select条件解析用户需要展示的内容
show_lst = get_show_lst(ret[0]) # '[NAME,AGE]' = 'select name,age'
# 根据where条件解析用户想查找的内容
select_lst = get_selected_line(con) # selected_lst中存储了所有符合条件的内容
# 将符合条件的内容按照用户的需求展示出来
show(select_lst, show_lst) # 显示

文件查询 select name,age where age>22的更多相关文章

  1. Oracle 查询(SELECT)语句(一)

    Ø  简介 本文介绍 Oracle 中查询(SELECT)语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习. 首先,我们先来理一下思路,我 ...

  2. mysql 查询select语句汇总

    数据准备: 创建表: create table students( id int unsigned primary key auto_increment not null, name varchar( ...

  3. Mybatis实体类的映射文件中select,insert语句使用

    id:在命名空间中唯一的标识符,可以被用来引用这条语句. parameterType:设置传入这条语句的参数的数据类型,如int,String...... resultType:设置从这条语句中返回数 ...

  4. [刘阳Java]_MyBatis_映射文件的select标签入门_第3讲

    1.Mybatis映射文件的<select>标签主要帮助我们完成SQL语句查询功能,<select>标签它包含了很多属性,下面简单对<select>标签的属性做一个 ...

  5. SqlServer:SqlServer(xpath,字段约束,时间查询,数据文件查询及还原,压缩备份)

    1.xpath --1.文档 select @data --2.任意级别是否存在price节点 select @data.exist('//price') --3.获取所有book节点 select ...

  6. Java-MyBatis-MyBatis3-XML映射文件:select

    ylbtech-Java-MyBatis-MyBatis3-XML映射文件:select 1.返回顶部 1. select 查询语句是 MyBatis 中最常用的元素之一,光能把数据存到数据库中价值并 ...

  7. sql_查询select

    sql_查询select   /****** Script for SelectTopNRows command from SSMS ******/ [r_gonghao] ,[r_mingzi] , ...

  8. 查询select

    --------------select查询-------------------查询所有信息(方法一)select * from stuinfo --*号代表所有列--查询所有信息(方法二)sele ...

  9. mysql数据库(二):查询(SELECT)

    一. 数据库查询—查询(SELECT) 单表查询 多表联合查询 二. 查询—单表查询 查询特定字段: select <字段1,字段2,...> from <表名>; 示例:查询 ...

随机推荐

  1. 一个方便 LeetCode 复习的脚本

    这个脚本半年前就在用了,只不过一直没有公开. 这是一个简易的 LeetCode 自动统计程序, 可自动统计最近提交通过的题目, 并以 Markdown 的形式展示相关的数据. 采用 GitHub Ac ...

  2. 浅谈Webpack模块打包工具二

    Webpack插件机制介绍 Loader专注实现资源模块加载,plugin解决其他自动化工作,比如清除dist目录,拷贝静态文件值输出目录,压缩输出代码等,下面列举几个plugin 的例子. Webp ...

  3. 数理统计9:完备统计量,指数族,充分完备统计量法,CR不等式

    昨天我们给出了统计量是UMVUE的一个必要条件:它是充分统计量的函数,且是无偏估计,但这并非充分条件.如果说一个统计量的无偏估计函数一定是UMVUE,那么它还应当具有完备性的条件,这就是我们今天将探讨 ...

  4. Python——Django框架——Model数据库模型

    一.设置 1.Django的setting中配置数据库(MySQL配置) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql' ...

  5. windows7 更新失败,无法开机处理方法

    记录一次今天同事笔记本无法开机的故障处理 windows7系统,安装更新失败,无法开机,卡在配置更新界面 处理方法,强制关机,开机按F8,进入安全模式,安全模式还会卡在配置更新界面,但是卡一会会进入系 ...

  6. LINUX - 寄存器和堆栈

    堆栈模型: 函数调用: EBP:ESP EBP当前调用函数的栈底: ESP当前调用函数的栈顶: ---------------------------------------------------- ...

  7. 使用nodejs爬取图片

    在运行代码前,请确保本机是否有nodejs环境 1 D:\ > node -v 2 v12.1.0 //版本号 需要用到的包 axios //请求页面 cheerio // 把get请求的页面 ...

  8. javascript questions & code review

    javascript questions & code review refs https://github.com/learning-js-by-reading-source-codes/j ...

  9. js Promise finally All In One

    js Promise finally All In One finally let isLoading = true; fetch(myRequest).then(function(response) ...

  10. UA 广告 All In One

    UA 广告 All In One UA 广告是什么 广告投放 / 市场营销 互联网营销和分析专用名词速览 http://www.chinawebanalytics.cn/digital-marketi ...