import re #打开文本文件 f = open("stock_data.txt",encoding="utf-8") #单独读取第一行数据处理进行分割,末尾换行符去掉 headers = f.readline().strip().split(',') print(headers) #定义一个字典,以股标代码做为KEY,每个行做为值 stock_list = {} for line in f:line = line.strip().split(',')print(line)stock_list[line[0]]=lineprint(type(stock_list),stock_list) f.close()
#允许用户通过模糊查询股票名, # 比如输入“哈工”, 就把所有名称当中包含啤酒的股票都打印出来。
while True:cmd = input("请你输入你的查询指令:")for s_id,s_data in stock_list.items():if cmd in s_data[1]:print(s_data)
# 允许按 当前价、涨跌幅、换手率 这几列来筛选信息, # 比如输入“当前价>50”则把价格大于50的股票都打印,
这重点说明一下,输入的条件要验证合法性,列名是否在上边的三列,数值是不是合法。
continue 是继续执行,
cmd_list = re.split("[><]",cmd) if len(cmd_list)!=2:print("你输入的筛选条件不合法,请重新输入!")continue cmd_name, cmd_value = cmd_list if cmd_name not in ["当前价","涨跌幅","换手率"]:print("你输入的筛选列名不合法,请重新输入!")continue try:cmd_value = float(cmd_value) except:print("你输入的筛选数值不合法,请重新输入!")continue
更新内容
#单独处理第一行,通过内容找到索引 headers = f.readline().strip().split(',') header_index = headers.index(cmd_name) print(header_index) print(cmd_name, cmd_value) for s_id, s_data in stock_list.items():if ">" in cmd:if float(s_data[header_index].strip("%")) > cmd_value:print(s_data)if "<" in cmd:if float(s_data[header_index].strip("%")) < cmd_value:print(s_data)