根据给定的ISO获取国家/地区(多种语言)



我正在构建一个django应用程序,我试图根据作为输入的iso获得一个国家列表(也可以包含多种语言的国家(。让我们考虑以下场景:

"iso": "AU",
"countries": ["Croatia","Egypt","Australia","Griechenland","Australien","Ausztrália"]

在给定的情况下,结果应该是:

"matched_countries": ["Australia","Australien","Ausztrália"]

我可以想出一个解决方案,其中有一张所有国家的地图和相应的ISO代码。但是,我如何在所有语言中做到这一点?手动选择所有名称将是一项艰巨的工作;有什么工具可以用来实现这一点吗?

您可能会发现这很有用:https://stefangabos.github.io/world_countries/

下载JSON中的国家信息,并制作一个函数,在JSON中搜索并返回所需的国家。

您可能希望操作JSON,以便查询和返回数据尽可能简单。例如,您可以对其进行重组,以便在第一级,ISO代码是一个关键字,而值是一个国家的字典:

{
"af": {
"ar": "أفغانستان",
"bg": "Афганистан",
"cs": "Afghánistán",
"da": "Afghanistan",
"de": "Afghanistan",
"el": "Αφγανιστάν",
"en": "Afghanistan",
"es": "Afganistán",
"et": "Afganistan",
"eu": "Afganistan",
"fi": "Afganistan",
"fr": "Afghanistan",
"hu": "Afganisztán",
"it": "Afghanistan",
"ja": "アフガニスタン",
"ko": "아프가니스탄",
"lt": "Afganistanas",
"nl": "Afghanistan",
"no": "Afghanistan",
"pl": "Afganistan",
"pt": "Afeganistão",
"ro": "Afganistan",
"ru": "Афганистан",
"sk": "Afganistan",
"sv": "Afghanistan",
"th": "อัฟกานิสถาน",
"uk": "Афганістан",
"zh": "阿富汗",
"zh-tw": "阿富汗"
},
"al": {
"ar": "ألبانيا",
"bg": "Албания",
"cs": "Albánie",
"da": "Albanien",
"de": "Albanien",
"el": "Αλβανία",
"en": "Albania",
"es": "Albania",
"et": "Albaania",
"eu": "Albania",
"fi": "Albania",
"fr": "Albanie",
"hu": "Albánia",
"it": "Albania",
"ja": "アルバニア",
"ko": "알바니아",
"lt": "Albanija",
"nl": "Albanië",
"no": "Albania",
"pl": "Albania",
"pt": "Albânia",
"ro": "Albania",
"ru": "Албания",
"sk": "Albánsko",
"sv": "Albanien",
"th": "แอลเบเนีย",
"uk": "Албанія",
"zh": "阿尔巴尼亚",
"zh-tw": "阿爾巴尼亞"
}
}

编写返回所需值的函数非常简单:

import json
cfile = open('countries.json', 'r', encoding="utf8") # Read country data from text file
country_data = json.load(cfile)
cfile.close()
# Returns all countries
def return_countries(iso):  # Use two digit ISO code
return country_data[iso]
# Returns country name in [lang] language
def return_country(iso, lang):  # Use two digit ISO code and desired language
return country_data[iso][lang]

输出示例:

函数return_countries:

print(return_countries('af'))

输出:

{'ar': 'أفغانستان', 'bg': 'Афганистан', 'cs': 'Afghánistán', 'da': 'Afghanistan', 'de': 'Afghanistan', 'el': 'Αφγανιστάν', 'en': 'Afghanistan', 'es': 'Afganistán', 'et': 'Afganistan', 'eu': 'Afganistan', 'fi': 'Afganistan', 'fr': 'Afghanistan', 'hu': 'Afganisztán', 'it': 'Afghanistan', 'ja': 'アフガニスタン', 'ko': '아프가니스탄', 'lt': 'Afganistanas', 'nl': 'Afghanistan', 'no': 'Afghanistan', 'pl': 'Afganistan', 'pt': 'Afeganistão', 'ro': 'Afganistan', 'ru': 'Афганистан', 'sk': 'Afganistan', 'sv': 'Afghanistan', 'th': 'อัฟกานิสถาน', 'uk': 'А Афганістан', 'zh': '阿富汗', 'zh-tw': '阿富汗'}

函数返回_国家:

print(return_country('af', 'fi'))

输出:

Afganistan

最新更新