You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用googletrans模块验证语言代码时触发KeyError问题求助

KeyError: 'en' 错误原因及修复方案

错误核心原因

googletrans库的LANGCODES字典是语言全称映射到语言代码的结构(比如{"english": "en"}),并非你预期的语言代码映射到语言全称。

你在checkForValidLanguageCode函数里写了googletrans.LANGCODES[langCode],当传入'en'时,程序会尝试在LANGCODES中查找键为'en'的条目,但这个字典根本没有以语言代码作为键的项,直接触发KeyError。同时你的校验逻辑也完全搞反了:要验证语言代码是否有效,应该检查它是否存在于以语言代码为键的字典中,googletrans提供的对应字典是googletrans.LANGUAGES(结构为{"en": "english"})。

修复后的代码

import googletrans
import bookDescription

bookList = ["Harry Potter", "The Alchemist", "The Hound of The Baskervilles", "Rich Dad Poor Dad"]

bookDescriptionDict = {
    bookList[0]: bookDescription.harry_potter,
    bookList[1]: bookDescription.the_alchemist,
    bookList[2]: bookDescription.the_hound_of_the_baskervilles,
    bookList[3]: bookDescription.rich_dad_and_poor_dad,
}

def checkForValidLanguageCode(langCode):
    # 检查输入的语言代码是否在LANGUAGES的键集合中
    return langCode in googletrans.LANGUAGES

preferedLangCodeInp = input("Enter the language you prefer to read in (Language Codes only): ")
isValid = checkForValidLanguageCode(preferedLangCodeInp)

if isValid:
    print(f"Ok, your preferred language is {googletrans.LANGUAGES[preferedLangCodeInp]}.")
else:
    print("That's not a valid language code!")

额外说明

  • googletrans.LANGUAGES:键为语言代码(如'en'),值为语言全称,适合校验语言代码的有效性
  • googletrans.LANGCODES:键为语言全称(如'english'),值为语言代码,适合根据语言名称查询对应代码

内容的提问来源于stack exchange,提问作者a random noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:15:29