zhuoyue65 发表于 2018-3-9 13:28:29

《Python入门到实践》——项目2(16.2.4 获取两个字母的国别码)

“制作地图前,还需要解决数据存在的最后一个问题。 Pygal 中的地图制作工具要求数据为特定的格式:用国别码表示国家,以及用数字表示人口数量。处理地理政治数据时,经常
需要用到几个标准化国别码集。 population_data.json 中包含的是三个字母的国别码,但 Pygal 使用两个字母的国别码。我们需要想办法根据国家名获取两个字母的国别码。
Pygal 使用的国别码存储在模块 i18n ( internationalization 的缩写)中。字典 COUNTRIES 包含的键和值分别为两个字母的国别码和国家名。要查看这些国别码,可从模块 i18n 中导
入这个字典,并打印其键和值:”

书上要求写的代码如下:
countries.py
from pygal.il8n import COUNTRIES

for country_code in sorted(COUNTRIES.keys()):
    print(country_code,COUNTRIES)

运行后会发现报错。
“Traceback (most recent call last):
File "C:/Users/sesa430507/.spyder-py3/Project2-data visualization/Chapter 16 download data/countries.py", line 1, in <module>
    from pygal.il8n import COUNTRIES
ModuleNotFoundError: No module named 'pygal.il8n'”

随后百度寻找,终于找到了对应的方法。
对于报错,事实上,pygal.i18n 已经不存在了,现在已经更改成了 pygal_maps_world ,需要单独通过pip下载,我使用的是Python3,因此需要在终端使用 pip3 指令进行安装:
pip install pygal_maps_world

安装成功之后,就可以正常调用国别码了。
最终的代码:
from pygal_maps_world.i18n import COUNTRIES

for country_code in sorted(COUNTRIES.keys()):
    print(country_code,COUNTRIES)

打印出:
ad Andorra
ae United Arab Emirates
af Afghanistan
al Albania
am Armenia
ao Angola
--snip--

帅楠楠 发表于 2018-6-22 22:54:01

可以把population_data.json发一份给我吗? 源程序没有{:5_92:}

zxc七哥 发表于 2018-8-1 14:13:43

zhuoyue65 发表于 2018-11-25 12:45:29

帅楠楠 发表于 2018-6-22 22:54
可以把population_data.json发一份给我吗? 源程序没有

才看到,不好意思。不知道你找到了没?

海-啵啵鱼 发表于 2020-3-24 21:07:43

感谢楼主,顺利解决问题

海-啵啵鱼 发表于 2020-3-24 21:09:11

帅楠楠 发表于 2018-6-22 22:54
可以把population_data.json发一份给我吗? 源程序没有

可以访问一下网址获取,参考csdn博主https://blog.csdn.net/weixin_40892578/article/details/104601661
页: [1]
查看完整版本: 《Python入门到实践》——项目2(16.2.4 获取两个字母的国别码)