我需要获取ISO 639-1 代码,例如en-GB
并将其转换为ISO 639-2 代码,例如eng
.
我查看了以下库,但没有找到在其中任何一个库中执行该转换的记录方法:
我错过了什么吗?那就是 - 这些库中的任何一个都可能吗?
我需要获取ISO 639-1 代码,例如en-GB
并将其转换为ISO 639-2 代码,例如eng
.
我查看了以下库,但没有找到在其中任何一个库中执行该转换的记录方法:
我错过了什么吗?那就是 - 这些库中的任何一个都可能吗?
你可以用pycountry
你想要的。请注意,如果您想要相反的情况(ISO 639-2 到 ISO 639-1),它可能并不总是有效,因为虽然应该始终存在从 ISO 639-1 语言代码到 ISO 639-2 的映射,但反过来是不保证。
import pycountry
code = 'en-GB'
# ISO 639-1 codes are always 2-letter codes, so you have to take
# the first two characters of the code
# This is a safer way to extract the country code from something
# like en-GB (thanks ivan_pozdeev)
lang_code = code[:code.index('-')] if '-' in code else code
lang = pycountry.languages.get(iso639_1_code=lang_code)
print("ISO 639-1 code: " + lang.iso639_1_code)
print("ISO 639-2 code: " + lang.iso639_2T_code)
print("ISO 639-3 code: " + lang.iso639_3_code)
上面应该打印出来:
ISO 639-1 code: en
ISO 639-2 code: eng
ISO 639-3 code: eng
Wikipedia 上的 ISO 639-2 代码列表有一个指定对应关系的表格。由于它不是 1-1 映射,因此并非总是可以进行转换。
您确实错过了一些东西 - 很有可能使用您指定的库进行转换。
内置语言转换器(alpha2、alpha3b、alpha3t、名称、范围、类型和 opensubtitles):
>>> language = babelfish.Language('por', 'BR') >>> language.alpha2 'pt' <...> >>> babelfish.Language.fromalpha3b('fre') <Language [fr]>
langcodes
为不同的任务量身定制 - 无论标准如何,都能识别和匹配语言。因此,您可以提取与您的初始代码相关的所有代码 - 在不同程度上 - 但它不会告诉您它们属于哪些标准。
pycountry
与另一个答案相似babelfish
并被其他答案覆盖。