gpt4 book ai didi

python - pycountries : Convert Country Names (Possibly Incomplete! ) 到 CountryCodes

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:54 24 4
gpt4 key购买 nike

我正在尝试使用 pycountries 库将国家名称数据列表转换为 ISO3166 国家代码 (alpha3)。我的基本功能是:

import pycountries as pc

def guess_country(data, output='alpha3', verbose=False):
#Check Data isn't already in Alpha3
try:
country = pc.countries.get(alpha3=data)
return country
except:
pass #KeyError Raised, data doesn't directly match
#Check if Country is Actual CountryName
try:
country = pc.countries.get(name=data)
return country
except:
pass #KeyError Raised, data doesn't directly match
#Check RegExpr of 'data' in an attempt to match

问题是 CountryName 数据相当脏......一个简短的示例列表是

GUATMAL、中国、科伦坡、墨西哥、HG KONG

有谁知道是否有一个包可以返回给定 cntry_name 的最佳“猜测”匹配?我很高兴有些人因为困难而被拒绝(即中国 T -> 台湾)。如果 best_guess 返回关于“猜测”的确定性度量,那就太好了。

最佳答案

你可以使用 difflib (内置于 python 中)以选择接近的国家/地区名称:

import difflib
country_names = [x.name.lower() for x in pycountry.countries]
matching_countries = difflib.get_close_matches(data, country_names)
confidence = difflib.SequenceMatcher(None, matching_countries[0], data).ratio()

matching_countries 将包含相似国家/地区名称的列表。您可以使用选项 n 和截止参数指定返回的结果数和匹配的灵敏度。

注意:get_close_matches 方法区分大小写,因此您可能希望在查找匹配项之前将所有内容转换为小写。

我通过 get_close_matches 运行了您拥有的示例数据,它适用于除台湾以外的所有地区。

如果您有许多已知的棘手匹配项,可能值得放入一个包含常见困难输入数据(如“China T”)的字典来手动处理这些异常。当然,如果输入数据比较一致,使用简单的字典查找可能是最好的选择。

关于python - pycountries : Convert Country Names (Possibly Incomplete! ) 到 CountryCodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15377832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com