股票查询脚本
本文最后更新于 2025-12-17,文章内容可能已经过时。
股票查询脚本
历时两天终于完成了,期间学习、巩固了很多知识。
list列表80%
dict字典50%
str字符串90%
异常处理10%
文件处理70%
# -*- coding = utf-8 -*-
# Author:YuanBai
# 作者:元白
# @Time : 2022/6/11-2:25
# @File : 股票查询.py
# @Software : PyCharm
def error_out(info: str):
print(info+'''
输入help或h查看说明文档。
******************************''')
def find(title_type: str, _num):
try:
cond = query.replace(title_type, '').replace('市盈率', '').replace('TTM', '')
show = []
if cond[-1] == '%':
num = float(cond[1:-1:]) / 100
elif cond[-1] == '万':
num = float(cond[1:-1:])
num = num
elif cond[-1] == '亿':
num = float(cond[1:-1:])
num *= 10000
else:
num = float(cond[1::])
for i in range(len(gp_lst)):
check_info = gp_lst[i][_num]
if check_info[-1] == '%':
check_info = check_info[0:-1:]
check_info = float(check_info) / 100
elif check_info[-1] == '万':
check_info = float(check_info[0:-1:])
elif check_info[-1] == '亿':
check_info = float(check_info[0:-1:]) * 10000
elif _num == 9:
if check_info != '亏损':
check_info = float(check_info)
else:
check_info = -1
elif _num == 10:
if check_info != '-':
check_info = check_info[0:-1:]
check_info = float(check_info) / 100
else:
check_info = 0
else:
check_info = float(check_info)
if cond[0] == '>':
if check_info > num:
show.append(i)
elif cond[0] == '<':
if check_info < num:
show.append(i)
elif cond[0] == '=':
if check_info == num:
show.append(i)
else:
error_out('error:25,输入错误,请重新输入!')
if show:
show_title(title_lst)
for i in show:
show_result(i)
else:
print('无符合条件的数据!')
except (ValueError, IndexError):
error_out('输入格式错误!')
except SystemExit:
error_out('error:27,输入错误,请重新输入!')
def creat_lst(file_path):
with open(file_path, 'r+', encoding='utf-8') as f:
a = []
[a.append(i) for i in f]
b = [i.strip() for i in a]
gp_lst = [b[i].split(',') for i in range(1, len(b))]
title_lst = b[0].split(',')
name_lst = [b[i].split(',')[1] for i in range(1, len(b))]
return title_lst, gp_lst, name_lst
def show_help():
print('''
------------------------帮助文档-------------------------
本系统支持以下查询方式。
1.输入完整股票代码查询
2.模糊股票名称查询
3.其他条件查询{查询项}{筛选条件}
------------------------查询样例-------------------------
SZ000615
华特气体
气体
当前价>50
涨跌幅<20%
市值>200亿
------------------------特殊说明-------------------------
对于包含'%'的条件,不加'%'将按照补齐'%'后运算。
如:"涨跌幅<20%"的查询效果等同于"涨跌幅<0.2"
对于数额上万的查询条件,需要在数字后加单位。
如:成交额<5000万
----------------------支持条件查询列表---------------------
当前价
涨跌额
涨跌幅
年初至今
成交量
成交额
换手率
市盈率(TTM)/市盈率/TTM
股息率
市值
--------------------------------------------------------''')
def show_title(title_lst):
for k in title_lst:
print(k, end=' ')
print()
def show_result(num: int):
print([j for j in gp_lst[num]], end=' ')
print()
return False
if __name__ == '__main__':
import re
# from functools import reduce
file_path = '股票信息.txt'
try:
title_lst, gp_lst, name_lst = creat_lst(file_path)
while 1:
try:
query = input('股票查询接口:')
flag = -1
show = 0
# 打标记
for i in range(2, 12):
if title_lst[i] in query:
flag = i
break
elif 'SZ' in query or 'SH' in query:
flag = 0
break
elif '市盈率' in query or 'TTM' in query:
flag = 9
break
# 无输入
if query == '':
continue
# 退出
elif query == 'quit' or query == '^D':
print('退出!')
break
elif query == 'h' or query == 'help':
show_help()
# 股票代码
elif flag == 0:
for i in range(len(gp_lst)):
if gp_lst[i][0] == query:
show_title(title_lst)
flag = show_result(i)
if flag == 0:
error_out('请输入完整的股票代码。')
# 股票名称模糊查询
elif flag == -1:
result = []
for i in range(len(gp_lst)):
if re.search(query, name_lst[i]):
result.append(i)
flag = 1
if flag == -1:
error_out('查无此信息,请输入正确的股票名称。')
else:
show_title(title_lst)
[show_result(i) for i in result]
# 其他条件查询
elif flag > 1:
find(title_lst[flag], flag)
else:
error_out('149 查无此信息。')
except FileNotFoundError:
print('while error')
break
except FileNotFoundError:
print(f'未找到文件:{file_path}')
except IndexError:
print(f'文件"{file_path}"内信息错误')
股票查询接口:股份
股票代码 股票名称 当前价 涨跌额 涨跌幅 年初至今 成交量 成交额 换手率 市盈率(TTM) 股息率 市值
SH603348 文灿股份 18.06 +1.64 +9.99% -25.15% 357.86万 6328.87万 4.39% 89.39 0.89% 41.83亿
展示的表格有点丑,明天学习优化一下。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 纪梦鱼
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地

