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]]=line print(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)标签:cmd,list,print,正则,灵活运用,line,stock,data,字典 From: https://blog.csdn.net/lfsysc/article/details/141070836