255 lines
5.9 KiB
Python
255 lines
5.9 KiB
Python
"""
|
||
股票名称映射数据库
|
||
包含常见A股股票的名称到代码的映射
|
||
"""
|
||
from typing import Optional
|
||
|
||
# 常见A股股票名称映射(按行业分类)
|
||
STOCK_NAME_MAP = {
|
||
# 白酒
|
||
"贵州茅台": "600519",
|
||
"茅台": "600519",
|
||
"五粮液": "000858",
|
||
"泸州老窖": "000568",
|
||
"山西汾酒": "600809",
|
||
"洋河股份": "002304",
|
||
|
||
# 银行
|
||
"工商银行": "601398",
|
||
"工行": "601398",
|
||
"建设银行": "601939",
|
||
"建行": "601939",
|
||
"农业银行": "601288",
|
||
"农行": "601288",
|
||
"中国银行": "601988",
|
||
"中行": "601988",
|
||
"交通银行": "601328",
|
||
"交行": "601328",
|
||
"招商银行": "600036",
|
||
"招行": "600036",
|
||
"兴业银行": "601166",
|
||
"浦发银行": "600000",
|
||
"民生银行": "600016",
|
||
"光大银行": "601818",
|
||
"平安银行": "000001",
|
||
"宁波银行": "002142",
|
||
|
||
# 保险
|
||
"中国平安": "601318",
|
||
"平安": "601318",
|
||
"中国人寿": "601628",
|
||
"中国太保": "601601",
|
||
"新华保险": "601336",
|
||
|
||
# 证券
|
||
"中信证券": "600030",
|
||
"中信": "600030",
|
||
"海通证券": "600837",
|
||
"国泰君安": "601211",
|
||
"华泰证券": "601688",
|
||
"广发证券": "000776",
|
||
"招商证券": "600999",
|
||
"东方证券": "600958",
|
||
|
||
# 科技
|
||
"中兴通讯": "000063",
|
||
"中兴": "000063",
|
||
"立讯精密": "002475",
|
||
"京东方A": "000725",
|
||
"京东方": "000725",
|
||
"TCL科技": "000100",
|
||
"海康威视": "002415",
|
||
"大华股份": "002236",
|
||
"科大讯飞": "002230",
|
||
"讯飞": "002230",
|
||
"紫光国微": "002049",
|
||
"中芯国际": "688981",
|
||
"韦尔股份": "603501",
|
||
|
||
# 新能源汽车
|
||
"比亚迪": "002594",
|
||
"宁德时代": "300750",
|
||
"宁德": "300750",
|
||
"长城汽车": "601633",
|
||
"长城": "601633",
|
||
"上汽集团": "600104",
|
||
"上汽": "600104",
|
||
"广汽集团": "601238",
|
||
"广汽": "601238",
|
||
"吉利汽车": "00175", # 港股
|
||
"理想汽车": "02015", # 港股
|
||
"小鹏汽车": "09868", # 港股
|
||
"蔚来": "09866", # 港股
|
||
|
||
# 医药
|
||
"恒瑞医药": "600276",
|
||
"恒瑞": "600276",
|
||
"药明康德": "603259",
|
||
"迈瑞医疗": "300760",
|
||
"迈瑞": "300760",
|
||
"片仔癀": "600436",
|
||
"云南白药": "000538",
|
||
"白药": "000538",
|
||
"爱尔眼科": "300015",
|
||
"智飞生物": "300122",
|
||
|
||
# 消费
|
||
"伊利股份": "600887",
|
||
"伊利": "600887",
|
||
"海天味业": "603288",
|
||
"海天": "603288",
|
||
"格力电器": "000651",
|
||
"格力": "000651",
|
||
"美的集团": "000333",
|
||
"美的": "000333",
|
||
"海尔智家": "600690",
|
||
"海尔": "600690",
|
||
"老板电器": "002508",
|
||
|
||
# 地产
|
||
"万科A": "000002",
|
||
"万科": "000002",
|
||
"保利发展": "600048",
|
||
"保利": "600048",
|
||
"招商蛇口": "001979",
|
||
"金地集团": "600383",
|
||
"金地": "600383",
|
||
|
||
# 能源
|
||
"中国石油": "601857",
|
||
"中石油": "601857",
|
||
"中国石化": "600028",
|
||
"中石化": "600028",
|
||
"中国神华": "601088",
|
||
"神华": "601088",
|
||
"陕西煤业": "601225",
|
||
"长江电力": "600900",
|
||
"三峡能源": "600905",
|
||
|
||
# 通信
|
||
"中国移动": "600941",
|
||
"移动": "600941",
|
||
"中国电信": "601728",
|
||
"电信": "601728",
|
||
"中国联通": "600050",
|
||
"联通": "600050",
|
||
"中国卫通": "601698",
|
||
"卫通": "601698",
|
||
|
||
# 航空航天
|
||
"中国国航": "601111",
|
||
"国航": "601111",
|
||
"南方航空": "600029",
|
||
"南航": "600029",
|
||
"东方航空": "600115",
|
||
"东航": "600115",
|
||
"中国卫星": "600118",
|
||
"航天科技": "000901",
|
||
|
||
# 钢铁
|
||
"宝钢股份": "600019",
|
||
"宝钢": "600019",
|
||
"河钢股份": "000709",
|
||
"河钢": "000709",
|
||
"鞍钢股份": "000898",
|
||
"鞍钢": "000898",
|
||
|
||
# 有色金属
|
||
"紫金矿业": "601899",
|
||
"紫金": "601899",
|
||
"中国铝业": "601600",
|
||
"中铝": "601600",
|
||
"江西铜业": "600362",
|
||
"江铜": "600362",
|
||
"洛阳钼业": "603993",
|
||
|
||
# 化工
|
||
"万华化学": "600309",
|
||
"万华": "600309",
|
||
"华鲁恒升": "600426",
|
||
"恒力石化": "600346",
|
||
"荣盛石化": "002493",
|
||
|
||
# 电力设备
|
||
"隆基绿能": "601012",
|
||
"隆基": "601012",
|
||
"阳光电源": "300274",
|
||
"通威股份": "600438",
|
||
"通威": "600438",
|
||
"特变电工": "600089",
|
||
|
||
# 军工
|
||
"中航沈飞": "600760",
|
||
"沈飞": "600760",
|
||
"中航西飞": "000768",
|
||
"西飞": "000768",
|
||
"中国船舶": "600150",
|
||
"中船": "600150",
|
||
"航发动力": "600893",
|
||
"航天发展": "000547",
|
||
|
||
# 互联网
|
||
"腾讯控股": "00700", # 港股
|
||
"腾讯": "00700",
|
||
"阿里巴巴": "09988", # 港股
|
||
"阿里": "09988",
|
||
"美团": "03690", # 港股
|
||
"京东": "09618", # 港股
|
||
"拼多多": "PDD", # 美股
|
||
"百度": "09888", # 港股
|
||
"网易": "09999", # 港股
|
||
"小米集团": "01810", # 港股
|
||
"小米": "01810",
|
||
|
||
# 指数
|
||
"上证指数": "000001",
|
||
"上证": "000001",
|
||
"沪指": "000001",
|
||
"深证成指": "399001",
|
||
"深成指": "399001",
|
||
"创业板指": "399006",
|
||
"创业板": "399006",
|
||
"科创50": "000688",
|
||
"沪深300": "000300",
|
||
"中证500": "000905",
|
||
"中证1000": "000852",
|
||
}
|
||
|
||
|
||
def search_stock_by_name(name: str) -> Optional[str]:
|
||
"""
|
||
根据股票名称搜索代码
|
||
|
||
Args:
|
||
name: 股票名称或简称
|
||
|
||
Returns:
|
||
股票代码或None
|
||
"""
|
||
# 精确匹配
|
||
if name in STOCK_NAME_MAP:
|
||
return STOCK_NAME_MAP[name]
|
||
|
||
# 模糊匹配(包含关系)
|
||
for stock_name, code in STOCK_NAME_MAP.items():
|
||
if name in stock_name or stock_name in name:
|
||
return code
|
||
|
||
return None
|
||
|
||
|
||
def get_stock_name(code: str) -> Optional[str]:
|
||
"""
|
||
根据代码获取股票名称
|
||
|
||
Args:
|
||
code: 股票代码
|
||
|
||
Returns:
|
||
股票名称或None
|
||
"""
|
||
for name, stock_code in STOCK_NAME_MAP.items():
|
||
if stock_code == code:
|
||
return name
|
||
return None
|