- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 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/
我正在尝试将国家名称转换为所需的国家代码。 例如: United Kingdom : UK 我尝试了以下操作: import pycountry user_input = raw_input(': '
尝试在 python 2.7 中导入和使用 pycountry。 import pycountry len(pycountry.countries) 但是,无法识别模块。 Traceback (mos
通常 PyInstaller 对我来说工作正常,但我发现使用 python 模块 pycountry 时出现问题。 我尝试了这个非常简单的代码: import pycountry land="DE"
我正在尝试将我的数据中的国家/地区与 python 内置的 pycountry 包进行匹配。运行后出现此错误 raise AttributeError 属性错误 countries_lookup =
我有一个 Python 函数,它接受一个 alpha2 国家代码和一个价格字符串,其目的是获取该国家/地区的货币并使用该货币的 currency.letter 属性使用字符串插值来格式化提供的价格字符
我有一个数据框,其中“国家/地区”列包含我要转换为 alpha_3 国家/地区代码的国家/地区名称(在标有“代码”的新列中)。我正在为此使用 pycountry,但遇到错误,因为一些国家/地区名称属于
我试图让我的用户按国家/地区搜索数据。用户将以他们的母语输入国家名称。但是,我的数据库只包含每个国家/地区的 alpha2 代码。 我目前的做法: user_input = "France" coun
我正在尝试使用 pycountries 库将国家名称数据列表转换为 ISO3166 国家代码 (alpha3)。我的基本功能是: import pycountries as pc def guess_
我是一名优秀的程序员,十分优秀!