Python:回溯XML文件错误?以及ASCII和';ascii';编解码器可以';t编码字符

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

我的第一篇帖子:o)也是我的第一个python步骤。我想从XMLAPI获取数据,并搜索一些youtube视频。我找到了这个:(XML部分)

我从视频(python脚本运行的地方)中“复制”了代码,以了解是否可以从XMLAPI获取信息,或者是否需要向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\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