
本文旨在提供一个清晰、简洁的 Python 函数,用于根据国家名称查找其对应的 2 位和 3 位 ISO 国家代码。通过加载包含国家信息的 JSON 文件,该函数能够高效地检索并返回所需的 ISO 代码,同时处理未找到国家的情况。
函数定义与实现
以下是一个名为 lookup_country_iso_codes 的 Python 函数,它接收一个国家名称字符串作为输入,并返回一个包含 2 位和 3 位 ISO 国家代码的元组。
import json
def lookup_country_iso_codes(country: str) -> tuple:
# Load the JSON file
with open('countries.json') as file:
countries = json.load(file)
# Iterate through countries and match the specified country name
for c in countries:
if c['name'] == country:
# Return 2-digit and 3-digit ISO codes when a match is found
return c['iso2'], c['iso3']
# If the country is not found, return None for both values
return None, None这段代码首先导入了 json 模块,用于处理 JSON 格式的数据。函数 lookup_country_iso_codes 接收一个字符串参数 country,表示要查找的国家名称。它打开名为 countries.json 的文件,并使用 json.load() 函数将 JSON 数据加载到名为 countries 的变量中。
然后,代码遍历 countries 列表,对每个国家 c 检查其 name 属性是否与输入的 country 匹配。如果找到匹配项,则返回该国家的 iso2 和 iso3 属性,分别代表 2 位和 3 位 ISO 代码。
立即学习“Python免费学习笔记(深入)”;
如果遍历完所有国家后仍未找到匹配项,则函数返回 (None, None),表示未找到该国家。
JSON 数据格式
为了使函数正常工作,countries.json 文件必须包含一个 JSON 数组,其中每个元素都是一个包含国家信息的 JSON 对象。每个对象至少应包含 name、iso2 和 iso3 属性,分别表示国家名称、2 位 ISO 代码和 3 位 ISO 代码。例如:
[
{
"name": "Afghanistan",
"iso2": "AF",
"iso3": "AFG",
"numeric": "004"
},
{
"name": "South Africa",
"iso2": "ZA",
"iso3": "ZAF",
"numeric": "710"
},
{
"name": "Åland Islands",
"iso2": "AX",
"iso3": "ALA",
"numeric": "248"
}
]使用示例
以下是一些使用 lookup_country_iso_codes 函数的示例:
print(lookup_country_iso_codes("Taiwan")) # 输出: ('TW', 'TWN')
print(lookup_country_iso_codes("Japan")) # 输出: ('JP', 'JPN')
print(lookup_country_iso_codes("United States")) # 输出: ('US', 'USA')
print(lookup_country_iso_codes("NonExistentCountry")) # 输出: (None, None)注意事项
- 大小写敏感性: 默认情况下,字符串比较是区分大小写的。如果需要进行不区分大小写的比较,可以在比较之前将国家名称转换为小写。
- JSON 文件路径: 确保 countries.json 文件位于脚本的同一目录下,或者提供正确的绝对路径或相对路径。
- 数据准确性: 函数的准确性取决于 countries.json 文件中数据的准确性。请确保使用可靠的数据源。
- 异常处理: 可以添加异常处理代码,以处理文件不存在或 JSON 格式错误等情况。
总结
lookup_country_iso_codes 函数提供了一种简单有效的方法,可以根据国家名称查找其 ISO 代码。通过使用 JSON 文件存储国家信息,该函数具有良好的可扩展性和易用性。使用时请注意数据准确性和文件路径,并根据需要添加适当的错误处理机制。










