2

私は 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')
4

1 に答える 1

1

デコード方法をどこで使用していますか?

過去にこのエラーが発生し、raw をデコードする必要がありました。言い換えれば、私はやってみます

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

それが実際にアスキーである場合です。私のポイントは、parseString を呼び出す前に、生の結果がまだ文字列形式である間にエンコード/デコードしていることを確認することです。

于 2013-04-18T03:28:44.403 に答える