Python 3.5 UnicodeDecodeError для файла в utf-8 (язык 'ang', древнеанглийский)

я впервые использую StackOverflow, чтобы задать вопрос, но вы коллективно сохранили за многие годы столько моих проектов, что я уже чувствую себя как дома.

Я использую Python3.5 и nltk для анализа полного корпуса древнеанглийского, который был опубликован для меня в виде 77 текстовых файлов, и документа XML, который обозначает последовательность файлов как непрерывные сегменты корпуса в формате TEI. Вот соответствующая часть заголовка документа XML, показывающая, что мы на самом деле работаем с TEI:

<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
  <teiHeader type="ISBD-ER">
    <fileDesc>

Итак, в качестве теста, я просто пытаюсь использовать MTECorpusReader NLTK, чтобы открыть корпус, и использовать метод words (), чтобы доказать, что я могу его открыть. Я делаю все это из интерактивной оболочки Python, просто для удобства тестирования. Вот все, что я действительно делаю:

# import the reader method    
import nltk.corpus.reader as reader

# open the sequence of files and the XML doc with the MTECorpusReader    
oecorpus = reader.mte.MTECorpusReader('/Users/me/Documents/0163','.*')

# print the first few words in the corpus to the interactive shell
oecorpus.words()

Когда я пытаюсь это сделать, я получаю следующую трассировку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/util.py", line 765, in __repr__
    for elt in self:
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/corpus/reader/util.py", line 397, in iterate_from
    for tok in piece.iterate_from(max(0, start_tok-offset)):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/corpus/reader/util.py", line 291, in iterate_from
    tokens = self.read_block(self._stream)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/corpus/reader/mte.py", line 25, in read_block
    return list(filter(lambda x: x is not None, XMLCorpusView.read_block(self, stream, tagspec, elt_handler)))
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/corpus/reader/xmldocs.py", line 307, in read_block
    xml_fragment = self._read_xml_fragment(stream)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/corpus/reader/xmldocs.py", line 252, in _read_xml_fragment
    xml_block = stream.read(self._BLOCK_SIZE)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/data.py", line 1097, in read
    chars = self._read(size)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/data.py", line 1367, in _read
    chars, bytes_decoded = self._incr_decode(bytes)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/data.py", line 1398, in _incr_decode
    return self.decode(bytes, 'strict')
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 59: invalid start byte

Итак, поскольку я доблестный StackOverflowsketeer, я определил, что либо один или несколько файлов повреждены, либо в файле (-ах) есть какой-то символ, содержащий символ, с которым декодер utf-8 Python не знает, как обращаться. Я могу быть уверен в целостности этого файла (поверьте мне на слово), поэтому я продолжаю

Я попробовал следующее, чтобы переформатировать 77 текстовых файлов без видимого эффекта:

for file in loglist:
    bufferfile = open(file, encoding='utf-8', errors='replace')
    bufferfile.close()
loglist = [name for name in os.listdir('.') if os.path.isfile(name)]

Итак, мои вопросы:

1) Имеет ли смысл мой подход, или я уже что-то напортачил в устранении неполадок?

2) Справедливо ли на этом этапе сделать вывод, что проблема должна быть связана с документом XML, основываясь на том факте, что ошибка UTF-8 обнаруживается очень рано (в шестнадцатеричной позиции 59), и на том факте, что моя замена ошибки utf-8 Сценарий не имеет значения для проблемы? Если я ошибаюсь, предполагая это, то как мне лучше изолировать проблему?

3) Если мы можем сделать вывод, что проблема связана с документом XML, каков наилучший способ ее устранения? Можно ли мне попытаться найти этот шестнадцатеричный байт и ASCII, которому он соответствует, и изменить символ?

Заранее спасибо за вашу помощь!

Ответы на вопрос(2)

Ваш ответ на вопрос