Ошибки кодирования Unicode Python - при синтаксическом анализе XML не может закодировать символ (звезда)
Я новичок в Python и в настоящее время анализирую веб-файл XML из API-интерфейса eventful.com, однако при получении определенных элементов данных я получаю некоторые ошибки Unicode.
Я могу получить 5 элементов данных без каких-либо проблем, которые я хочу из файла XML, но затем он завершается и выдает следующую ошибку в консоли ошибок 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
Есть ли какой-нибудь способ, которым я смог бы получить элементы "title" и игнорировать забавные символы, такие как символ ★, здесь? Я был бы очень признателен за любую помощь в этом вопросе. Я уже пробовал решения, которые используют word.encode («us-ascii», «ignore»), но это не решает проблему.
----------- Я НАШЕЛ РЕШЕНИЕ:
Так как у меня были такие проблемы с этой проблемой и после разговора с лектором на эту тему, я смог найти, что все, что ему нужно, это две строки кода для кодирования и декодирования проанализированного XML-файла (после того, как он был прочитан в программу ). Надеюсь, что это помогает кому-то еще с той же проблемой!
unicode_data = data.decode('utf-8')
data = unicode_data.encode('ascii','ignore')