Python综合实战-股票数据分析&处理(查询接口)
程序员文章站
2022-03-12 16:36:50
...
开发程序对stock_data.txt进⾏行行以下操作:
- 程序启动后,给⽤用户提供查询接⼝口,允许⽤用户重复查股票⾏行行情信息(⽤用到循环)
- 允许⽤用户通过模糊查询股票名,⽐比如输⼊入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来
- 允许按股票价格、涨跌幅、换⼿手率这⼏几列列来筛选信息,⽐比如输⼊入“价格>50”则把价格⼤大于50的股票
都打印,输⼊入“市盈率<50“,则把市盈率⼩小于50的股票都打印,不不⽤用判断等于。
思路路提示:加载⽂文件内容到内存,转成dict or list结构,然后对dict or list 进⾏行行查询等操作。 这样以后
就不不⽤用每查⼀一次就要打开⼀一次⽂文件了了,效率会⾼高
list_data=[]
#用来判断该列字符串最后一位是不是不是数字。
q_list=[4,5,6,8,10]
#用于处理两列单位不一致的
d_list=[7,11]
#将数据转化成一个列表
with open('g_data','r',encoding='utf-8') as f:
list_name=f.readline().strip('\n').split(',')
for line in f:
line = line.strip('\n')
list_data.append(line.split(','))
while True:
s= input("股票查询接口>>").strip()
print(list_name)
if '>' in s:
#命令分割
index= s.index('>')
name=s[0:index]
date=s[index+1:]
#获取所查的列数
l_index=list_name.index(name)
#处理列有百分号的情况
if l_index in q_list:
for l in list_data:
try:
if float(l[l_index][0:-1]) > float(date):
print(l)
except ValueError as e:
continue
#处理两列单位不同的情况
elif l_index in d_list:
for l in list_data:
if '亿' in l[l_index]:
if float(l[l_index][0:-1]) * 10000 > float(date):
print(l)
if float(l[l_index][0:-1]) > float(date):
print(l)
else:
for l in list_data:
try:
if float(l[l_index]) > float(date):
print(l)
except ValueError as e:
continue
#处理小于情况
elif '<' in s:
index = s.index('<')
name = s[0:index]
date = s[index + 1:]
# 获取所查的列数
l_index = list_name.index(name)
# 处理列有百分号的情况
if l_index in q_list:
for l in list_data:
try:
if float(l[l_index][0:-1]) < float(date):
print(l)
except ValueError as e:
continue
# 处理两列单位不同的情况
elif l_index in d_list:
for l in list_data:
if '亿' in l[l_index]:
if float(l[l_index][0:-1]) * 10000 < float(date):
print(l)
if float(l[l_index][0:-1]) < float(date):
print(l)
else:
for l in list_data:
try:
if float(l[l_index]) < float(date):
print(l)
except ValueError as e:
print(l)
# 模糊查询
else:
for l in list_data:
if s in l[1]:
print(l)
测试结果如下:注意金钱单位为万
下一篇: 利用电子书进行网络营销