私は 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ファイルをエンコードおよびデコードするために必要なのは2行のコードだけであることがわかりました(プログラムに読み込まれた後) )。これが同じ問題を抱えている他の誰かに役立つことを願っています!
unicode_data = data.decode('utf-8')
data = unicode_data.encode('ascii','ignore')