UnicodeDecodeError: код «utf-8» c не может декодировать байт 0x80 в позиции 3131: недопустимый начальный байт - PullRequest
0 голосов
/ 26 января 2020
import os
import shutil
import codecs


directory = '~/Desktop/ra/clean_tokenized/1987'

for filename in os.listdir(directory):
    full_name = directory + '/' + filename
    with open(full_name, 'r') as article:
        for line in article:
            print(line)

Вот трассировка:

Трассировка (последний вызов был последним): файл "~ / Desktop / corpus_filter / 01_corpus.py", строка 11, для строки в статье: Файл "~ / .conda / envs / MangerRA / lib / python3 .7 / codecs.py", строка 322, в декодировании (результат, используется) = self._buffer_decode (data, self.errors, final) UnicodeDecodeError: 'utf -8 'код c не может декодировать байт 0x80 в позиции 3131: недопустимый начальный байт

Файл содержит японские символы, и я просто пытаюсь создать файл CSV со всеми словами, имеющими подойти в файлах. Но я не могу преодолеть эту ошибку.

1 Ответ

0 голосов
/ 26 января 2020

Python пытается открыть ваш файл, используя кодировку UTF-8 (которая по умолчанию используется в большинстве случаев в наши дни). К сожалению, ваш файл использует какую-то другую кодировку (или иным образом повреждена), и поэтому декодирование не выполняется.

К сожалению, я не могу сказать, какую кодировку использует ваш файл. Вам придется исследовать это самостоятельно. Вы можете попробовать другую кодировку, например Shift JIS (с использованием open(full_name, 'r', encoding='shift-jis')), и посмотреть, получите ли вы правильный текст или mojibake .

Если все остальное не удается, вы можете открыть файл в двоичном режиме ('rb', а не просто 'r') и проверьте, что находится в байте 3131 и сразу после него. Это может быть просто испорченный бит данных в файле, который вы можете удалить или исправить вручную.

...