UnicodeDecodeError: 'charmap' 编解码器无法解码位置 49 中的字节 0x81:字符映射到 <undefined>

Fel*_*ipe 8 python geolocation python-3.x nominatim

我正在创建一个特定的函数,它可以为我提供有关 ISS(国际空间站)和给定位置(十进制坐标)的信息,该位置可能因输入而异。但是当我使用这个时:

print(ubicacion.raw['address']['country'],",",ubicacion.raw['address']['city'])
Run Code Online (Sandbox Code Playgroud)

它有效,但对于某些国家/地区,例如当我尝试使用坐标堪培拉时,它会显示以下信息:

Corinna Street, Phillip, District of Woden Valley, Australian Capital Territory, 2606, Australia

因为它不提供城市,所以当我使用 key 时"city",我显然得到一个错误,因为它不存在于该列表中。

所以我想到的一个解决方案是,因为至少我会一直得到国家,也许我可以使用另一个功能,基于国家,我可以得到首都,这是我需要的,它存在, 我用"CountryInfo"( from countryinfo import CountryInfo)。问题是,当我尝试使用它时,出现以下错误:

UnicodeDecodeError: 'charmap' 编解码器无法解码位置 49 中的字节 0x81:字符映射到

我已经搜索过类似的问题,很多人建议指定编码,但它似乎不适用于geopy. 因为我试过这个:

countryinfo=CountryInfo(country,encoding="utf8") 
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

TypeError: init () 得到了一个意外的关键字参数 'encoding'

Mar*_*k K 18

引用自:https : //python-forum.io/Thread-Countryinfo-package-charmap-error

来自 @snippsat 的回答 Sep-14-2018, 11:37 AM

打开countryinfo.py在..Lib \站点包\ countryinfo文件夹。将该行更改为:

country_info = json.load(open(file_path, encoding='utf-8'))
Run Code Online (Sandbox Code Playgroud)

这个对我有用。