2013-04-16 80 views
2

我是Python的初學者,目前正在解析來自eventful.com API的基於Web的XML文件,但是,我收到一些unicode錯誤檢索數據的某些元素。Unicode編碼錯誤Python - 解析XML無法對字符進行編碼(Star)

我能夠檢索5個數據元素,而這是我從XML文件中想要的任何問題,但是隨後它會終止,並在GAE錯誤控制檯產生以下錯誤:

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

我知道字符那是拋出我的分析器是一個「★」字符,我寧願不從xml文件檢索。

我的代碼如下:

​​

有什麼辦法,我將能夠檢索「標題」元素,而忽略奇怪的字符喜歡這裏的性格★?我真的很感謝在這個問題上的任何幫助。我已經嘗試過使用word.encode('us-ascii','ignore')的解決方案,但這並沒有解決問題。

-----------我已經找到了解決方案:

所以當我是有這個問題,說給講師對這個話題我能發現,經過這樣的問題所需要的只是兩行代碼,用於編碼和解碼已解析的xml文件(在讀入程序之後)。希望這可以幫助其他人有相同的問題!

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

http://stackoverflow.com/questions/3224268/python-unicode-encode-error?rq=1 – Patashu

+0

我曾嘗試過這種unicode編碼和解碼方法建議,仍然沒有這種運氣。 – Karen

+0

您的問題在於*打印節點數據。如果沒有完整的異常追溯,我無法再幫助診斷,但問題不可能與解析器處理的內容有關。 –

回答

1

你在哪裏使用你的解碼方法?

我在過去有這個錯誤,不得不解碼原料。換句話說,我會試着做

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

這就是說,如果它實際上是ascii。我的觀點是,在你調用parseString之前,確保你編碼/解碼的原始結果仍然是字符串格式。

+0

真的,重新編碼XML是一個解決方案?這不是XML輸入問題!這是打印節點數據的問題! –

相關問題