yfinance 如何设置 locale 让 Ticker.info 返回本地语言的公司名称
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
用 yfinance 拉取股票资料时,Ticker.info默认返回的是英文公司名称(例如小米是"Xiaomi Corporation")。如果你希望longName、shortName等字段跟随 Yahoo 的本地语言返回,需要通过 yfinance 的全局配置yf.config.locale来指定语言与地区。本文介绍如何设置这个 locale、如何验证生效,以及哪些情况 Yahoo 不会返回翻译结果。
前提:locale 的默认值
yfinance 的yf.config.locale有两个字段(定义见 config.py):
lang:BCP-47 语言标签,用于 Yahoo v7/v10 端点,默认"en-US"region:ISO 3166-1 alpha-2 国家码,默认"US"
默认 locale(en-US/US)下,1810.HK的longName返回"Xiaomi Corporation",这一点在仓库测试 test_ticker_locale.py 中有对应断言。
设置 locale:在会话开始时设置一次
根据 advanced/config.rst 的说明,localized 字段(longName、shortName等)跟随yf.config.locale。做法是在会话开始时切换一次,之后所有走 v7 / v10 端点的调用(Ticker.info、Ticker.fast_info、Ticker.calendar、earnings_dates等)都会继承该 locale。
以繁体中文(港)为例,文档给出的写法是:
import yfinance as yf yf.config.locale.lang = "zh-Hant-HK" yf.config.locale.region = "HK" name = yf.Ticker("1810.HK").info["longName"]以日语(日本)为例:
import yfinance as yf yf.config.locale.lang = "ja-JP" yf.config.locale.region = "JP" name = yf.Ticker("7203.T").info["longName"]两个代码块都是完整可运行的最小示例,只需要按目标语言替换lang/region的取值即可。
验证结果
文档给出的示例输出如下(文档示例,实际以 Yahoo 当前返回为准):
zh-Hant-HK/HK下,yf.Ticker("1810.HK").info["longName"]返回'小米集團-W'ja-JP/JP下,yf.Ticker("7203.T").info["longName"]返回'トヨタ自動車'
即:设置 locale 后重新读取.info["longName"],得到的是本地语言的公司名,而不是默认英文,就说明设置已生效。仓库测试 test_ticker_locale.py 还包含一个ru-RU/RU的用例:对GAZP.ME断言longName包含"Газпром"(若 Yahoo 未返回该字段则跳过测试),可作为俄语方向的参考。
locale 是通过请求参数传给 Yahoo 的。在 base.py 与 quote.py 中可以看到,相关请求的 params 都是{"lang": YfConfig.locale.lang, "region": YfConfig.locale.region},因此只要设置一次,后续请求即携带新的语言与地区。
限制:只有本地上市股票才有翻译
文档明确说明:Yahoo 只对在该 locale 本地上市的股票返回翻译值。即使把 locale 设为ja-JP,Ticker("AAPL")仍会返回"Apple Inc.",因为 Apple 的美国上市名称没有日语翻译(该行为在 test_ticker_locale.py 的test_locale_us_listing_not_translated用例中被断言)。
所以验证时如果名称仍是英文,先确认该股票是否在所选 locale 对应的市场本地上市,而不是 locale 设置本身出错。
小结
- 在会话开始时设置一次
yf.config.locale.lang和yf.config.locale.region,即可让Ticker.info等 v7/v10 端点调用返回本地语言的longName、shortName等字段; - 用目标市场本地上市的股票(如
1810.HK、7203.T)读取.info["longName"]来验证是否生效; - 本地未上市的股票(如美股代码在非美 locale 下)不会返回翻译值,此时保持原名是预期行为。
locale 属于进程内的全局配置,只在当前会话生效;换新会话时需要重新设置。更多全局配置项(network、debug等)见 advanced/config.rst。
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考