欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python综合实战-股票数据分析&处理(查询接口)

程序员文章站 2022-03-12 16:36:50
...

开发程序对stock_data.txt进⾏行行以下操作:

  1. 程序启动后,给⽤用户提供查询接⼝口,允许⽤用户重复查股票⾏行行情信息(⽤用到循环)
  2. 允许⽤用户通过模糊查询股票名,⽐比如输⼊入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来
  3. 允许按股票价格、涨跌幅、换⼿手率这⼏几列列来筛选信息,⽐比如输⼊入“价格>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)

测试结果如下:注意金钱单位为万
Python综合实战-股票数据分析&处理(查询接口)
Python综合实战-股票数据分析&处理(查询接口)
Python综合实战-股票数据分析&处理(查询接口)

相关标签: python 接口