使用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
相关产品推荐
相关产品推荐

