Skip to main content
 首页 » 编程设计

python之Unicode 编码错误 Python之解析 XML 无法编码字符 (Star)

2025年05月04日14lexus

我是 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') 

请您参考如下方法:

你在哪里使用你的解码方法?

我过去有过这个错误,不得不解码原始文件。换句话说,我会尝试做

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

也就是说,如果它实际上是 ascii。我的意思是,在调用 parseString 之前,请确保在原始结果仍为字符串格式时对其进行编码/解码。