Проверка / удаление не поддающихся декодированию байтов при предварительной обработке

#python #utf-8

#python #utf-8

Вопрос:

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

 def parse_single_file(filename):
    with open("/Users/njjones14/PycharmProjects/Big_Tech_Regulation/Big_Tech_Regulation_data/"   filename) as f:
        content = ijson.items(f, "value")
        row_list = []
        for o in content:
            print(filename)
            for i in range(0, len(o)):
                print(type(o[i]["Document"]))
                if o[i]["Document"] is not None: #Drops rows where there is no content
                    row_list.append(Row_object(o[i]["Jurisdiction"], o[i]["Location"], o[i]["ContentType"], o[i]["Byline"], o[i]["WordLength"],o[i]["Date"],o[i]["Title"],LDA_clean(o[i]["Document"]["Content"]),o[i]["Source"]["Name"]))
    return row_list
  

После правильного запуска первых 100 или около того файлов я получил следующую ошибку:

 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte. 
  

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

 Traceback (most recent call last):
  File "/Users/njjones14/PycharmProjects/Big_Tech_Regulation/Import_and_Clean.py", line 240, in <module>
    list_of_row_objects = parse_single_file(filename)
  File "/Users/njjones14/PycharmProjects/Big_Tech_Regulation/Import_and_Clean.py", line 208, in parse_single_file
    for o in content:
  File "/Users/njjones14/PycharmProjects/Big_Tech_Regulation/venv/lib/python3.8/site-packages/ijson/compat.py", line 32, in read
    return self.str_reader.read(n).encode('utf-8')
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte
  

Заранее спасибо, я думаю, что это связано с декодированием символов, но я думал, что стартовые байты обычно не являются проблемой.

Комментарии:

1. Ошибка означает, что файл НЕ является UTF8. Вам нужно будет найти правильную кодировку и прочитать ее. То, что вы пытаетесь сделать, приведет только к искаженным данным

2. Как выглядит файл JSON? Что в строке, которая вызвала ошибку?