3

Pythonでutf-8でエンコードされたxmlファイルを読み取ろうとしていますが、ファイルから読み取った行で次のような処理を行っています:

next_sent_separator_index =  doc_content.find(word_value, int(characterOffsetEnd_value) + 1)

doc_content はファイルから読み取られた行であり、word_value は同じ行の文字列の 1 つです。doc_content または word_value に Unicode 文字が含まれている場合は常に、上記の行のエンコーディング関連のエラーが発生します。そのため、以下のように (デフォルトの ascii エンコードではなく) utf-8 デコードで最初にデコードしようとしました。

next_sent_separator_index =  doc_content.decode('utf-8').find(word_value.decode('utf-8'), int(characterOffsetEnd_value) + 1)

しかし、私はまだ以下のように UnicodeDecodeError を取得しています:

Traceback (most recent call last):
  File "snippetRetriver.py", line 402, in <module>
    sentences_list,lemmatised_sentences_list = getSentenceList(form_doc)
  File "snippetRetriver.py", line 201, in getSentenceList
    next_sent_separator_index =  doc_content.decode('utf-8').find(word_value.decode('utf-8'), int(characterOffsetEnd_value) + 1)
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 8: ordinal not in range(128)

Python 2.7 でこの種のエンコーディング エラーを回避するための適切なアプローチ/方法を誰かが提案できますか?

4

1 に答える 1

5
codecs.utf_8_decode(input.encode('utf8'))
于 2012-06-03T17:05:36.680 に答える