Python:将 ISIN、WKN 或 RIC 转换为 Yahoo Ticker Symbol?

Python: Transform ISIN, WKN or RIC to Yahoo Ticker Symbol?

基于此 post ,我有可能在库 investpy 的帮助下将 ISIN 转换为某种形式的股票代码。这种转换对大多数美国股票都是正确的。

但是这个符号本身在任何情况下都与我需要调用的股票代码不同pandas_dataframe。我认为更确切地说它符合 RIC 符号(例如看 here)。

例如,如果我尝试以下调用:

import investpy

df = investpy.stocks.search_stocks(by='isin', value='DE0006048432')
print(df)

我的输出是:

       country        name  ... currency     symbol
0      germany  Henkel VZO  ...      EUR     HNKG_p
1        italy  Henkel VZO  ...      EUR     HNKG_p
2  switzerland  Henkel VZO  ...      EUR  HNKG_pEUR

但是

from pandas_datareader import data as pdr

stock = pdr.DataReader('HNKG_p', data_source="yahoo", start="2021-01-01", end="2021-10-30")

给我一个错误。

我需要的正确调用是:

stock = pdr.DataReader('HEN3.DE', data_source="yahoo", start="2021-01-01", end="2021-10-30")

所以我的问题是:

或更一般

超级丑陋且容易出错,但聊胜于无:

import investpy as ip
import yahooquery as yq
from pandas_datareader import data as pdr

company_name = ip.stocks.search_stocks(by='isin', value='DE0006048432')
company_name = company_name["name"][0].split(' ')[0]
symbol = yq.search(company_name)["quotes"][0]["symbol"]
stock = pdr.DataReader(symbol, data_source="yahoo", start="2021-01-01", end="2021-10-30")

您可以使用诸如 fuzzywuzzy 之类的东西和带有 doctest 的普通测试模块来扩展此代码。不要在生产中使用此代码。

我什至不确定这个调用是否保持返回值的顺序:

yq.search(company_name)["quotes"]

所以这段代码实际上可能会随机运行,但它可能会给你一个方向。