【发布时间】:2021-02-07 21:29:10
【问题描述】:
我的第一篇文章 :o) 也是我的第一个 python 步骤。我想从 xml api 获取数据并搜索一些 youtube 视频。我找到了这个:https://youtu.be/jeZp5NE9lII?t=685(XML 部分)
我“复制”了视频中的代码(python 脚本运行的地方),以确定我是否可以从 XML API 获取信息,或者是否需要向我的 ATOM 或 Python 添加一些内容。代码如下:
import requests
import xml.etree.ElementTree as ET
url = 'http://api.worldbank.org/countries'
response = requests.get(url)
country_data = response.text
countries = ET.fromstring(country_data)
namespaces = {'wb': 'http://www.worldbank.org'}
for country in countries.findall('wb:country', namespaces):
name = country.find('wb:name', namespaces).text
code = country.find('wb:iso2Code', namespaces).text
print('country: {} {}'.format(name, code))
有一些错误。所以我在我的mac上安装了:
sudo easy_install pippython -m pip install requests
现在我有以下错误:
File "/var/folders/2k/ynjbnhl17pg6_wtr20l149xh0000gn/T/atom_script_tempfiles/3a3bf940-16b6-11eb-8d53-6b13b4204efb", line 30, in <module>
countries = ET.fromstring(country_data)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1311, in XML
parser.feed(text)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1657, in feed
self._parser.Parse(data, 0)
UnicodeEncodeError: 'ascii' codec can't encode```
What I did wrong?
【问题讨论】:
-
你有非常非常好的理由使用 Python 2.7 编写代码吗?作为初学者,您不应该花时间学习它。 Python 3 的主要变化之一是它的 Unicode 字符串消除了许多神秘的编码和解码挑战。
-
感谢您的提示。不,我没有理由使用 Python 2.7。实际上我已经安装了 Python 3.9。根据我的研究,Atom 转到标准版本的 Mac OS = Python 2.7,所以我在 Mac 上的 Python 2 和 3 并存:stackoverflow.com/questions/35546627/…。所以我必须在 Atom 中设置正确的 Python 版本:之后错误消息更改为我没有安装 Requests ;)
-
这是一个预期的消息。在一个 Python 环境中安装一个模块确实可以使它在另一个环境中可用。代码很可能会有所不同。因此,在切换到 Python 3 后,转到您的 Python 2 环境,然后执行
pip list以了解您需要在 Python 3 中执行哪些安装以复制您在 Python 2 中的内容。
标签: python xml python-2.7 character-encoding