我是Python的初学者,目前正在从eventful.com API解析基于Web的XML文件,但是,在检索数据的某些元素时,我收到一些Unicode错误。

我能够从xml文件中检索5个数据元素而没有任何我想要的问题,但是随后它终止并在GAE错误控制台中产生以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2605' in position 0: ordinal not in range(128)

我知道抛出解析器的字符是一个“★”字符,无论如何我都不希望从xml文件中检索该字符。

我的代码如下:

class XMLParser(webapp2.RequestHandler):
        def get(self):
        base_url = 'my xml file'
        #downloads data from xml file
        response = urllib.urlopen(base_url)
        #converts data to string:
        data = response.read()

        #closes file
        response.close()

        #parses xml downloaded
        dom = mdom.parseString(data)
        node = dom.documentElement  
        #print out all event names (titles) found in the eventful xml
        event_main = dom.getElementsByTagName('event')

        event_names = []
        for event in event_main:
            eventObj = event.getElementsByTagName("title")[0]
            event_names.append(eventObj)

        for ev in event_names:
            nodes = ev.childNodes
            for node in nodes:
                if node.nodeType == node.TEXT_NODE:
                    print node.data

有什么方法可以检索“标题”元素,而忽略诸如★字符之类的有趣字符? 我真的很感谢在此问题上的任何帮助。 我已经尝试过使用word.encode('us-ascii','ignore')的解决方案,但这不能解决问题。

-----------我找到了解决方案:

因此,当我遇到这个问题的问题时,与一位讲师就此话题进行交谈之后,我发现所需要的只是两行代码,可以对已解析的xml文件进行编码和解码(将其读入程序后) )。 希望这可以帮助其他人遇到同样的问题!

unicode_data = data.decode('utf-8')
data = unicode_data.encode('ascii','ignore')

===============>>#1 票数:1

您在哪里使用解码方法?

我过去曾遇到此错误,因此必须对原始数据进行解码。 换句话说,我会尝试

data = response.read()
#closes file
response.close()
#decode
data.encode("us-ascii")

那实际上是ascii。 我的意思是在调用parseString之前,请确保在原始结果仍为字符串格式的情况下对其进行编码/解码。

  ask by Karen translate from so

未解决问题?本站智能推荐: