Python:回溯XML文件错误?以及ASCII和';ascii';编解码器可以';t编码字符
我的第一篇帖子:o)也是我的第一个python步骤。我想从XMLAPI获取数据,并搜索一些youtube视频。我找到了这个:(XML部分) 我从视频(python脚本运行的地方)中“复制”了代码,以了解是否可以从XMLAPI获取信息,或者是否需要向ATOM或python中添加一些内容。代码如下:Python:回溯XML文件错误?以及ASCII和';ascii';编解码器可以';t编码字符,python,xml,python-2.7,character-encoding,Python,Xml,Python 2.7,Character Encoding,我的第一篇帖子:o)也是我的第一个python步骤。我想从XMLAPI获取数据,并搜索一些youtube视频。我找到了这个:(XML部分) 我从视频(python脚本运行的地方)中“复制”了代码,以了解是否可以从XMLAPI获取信息,或者是否需要向ATOM或python中添加一些内容。代码如下: import requests import xml.etree.ElementTree as ET url = 'http://api.worldbank.org/countries' respo
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\u安装pip
python-mpip安装请求
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?
File”/var/folders/2k/ynjbnhl17pg6_wtr20l149xh0000gn/T/atom_script_tempfiles/3a3bf940-16b6-11eb-8d53-6b13b4204efb“,第30行,in
国家=ET.fromstring(国家/地区数据)
xml格式的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py”,第1311行
parser.feed(文本)
提要中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py”,第1657行
self.\u parser.Parse(数据,0)
UnicodeEncodeError:“ascii”编解码器无法编码```
我做错了什么?
如果您打印response.text
的前50个字符,您将得到以下结果:
ï»
如果使用Python3而不是Python2,您可能会发现使用不同的编码更容易。您是否有非常非常好的理由使用Python2.7编写代码?作为初学者,你不应该把时间花在学习上。Python3的一个主要变化是它的Unicode字符串消除了许多神秘的编码和解码挑战。谢谢你的提示。不,我没有理由使用Python 2.7。实际上我已经安装了Python 3.9。根据我的研究,Atom使用Mac OS=Python2.7的标准版本,因此我在Mac上使用了Python2和Python3共存:。因此,我必须在Atom中设置正确的Python版本:在此之后,错误消息更改为我没有安装请求;)这是一个预期的信息。在一个Python环境中安装模块并不能使它在另一个Python环境中可用。代码可能会有所不同。因此,在切换到Python3之后,转到Python2环境,并执行pip list
,以了解在Python3中需要执行哪些安装来复制Python2中的内容。
country_data = response.content