json .decoder.JSONDecodeError PYTHON - PullRequest
       8

json .decoder.JSONDecodeError PYTHON

1 голос
/ 12 февраля 2020

В настоящее время я обрабатываю базу данных json, и на данный момент у меня есть файл, содержащий 10000 json строк, например:

{"name": "Khau0304lid Muhu0323ammad u02bbAliu0304 al-Hu0323au0304jj", "personal_name": "Khau0304lid Muhu0323ammad u02bbAliu0304 al-Hu0323au0304jj", "last_modified": {"type": "/type/datetime", "value": "2008-08-20T17:57:09.66187"}, "key": "/authors/OL1000057A", "type": {"key": "/type/author"}, "revision": 2}
{"name": "K. Hardono", "personal_name": "K. Hardono", "last_modified": {"type": "/type/datetime", "value": "2008-09-08T16:19:17.29978"}, "key": "/authors/OL100029A", "type": {"key": "/type/author"}, "revision": 2}
{"name": "Nuu0304r al-Diu0304n Su0323ammuu0304d", "personal_name": "Nuu0304r al-Diu0304n Su0323ammuu0304d", "last_modified": {"type": "/type/datetime", "value": "2008-08-20T17:58:34.686964"}, "key": "/authors/OL1000624A", "type": {"key": "/type/author"}, "revision": 2}
{"name": "Mawlu016bd Qu0101sim Nu0101yit Bulqu0101sim", "personal_name": "Mawlu016bd Qu0101sim Nu0101yit Bulqu0101sim", "created": {"type": "/type/datetime", "value": "2008-04-01T03:28:50.625462"}, "last_modified": {"type": "/type/datetime", "value": "2017-11-10T08:11:59.146669"}, "latest_revision": 3, "key": "/authors/OL1000703A", "type": {"key": "/type/author"}, "revision": 3}
{"name": "Ali Ak", "personal_name": "Ali Ak", "last_modified": {"type": "/type/datetime", "value": "2008-08-20T17:59:35.453547"}, "key": "/authors/OL1001014A", "type": {"key": "/type/author"}, "revision": 2}
{"name": "Nazamiu0304 Rau0304majiu0304", "personal_name": "Nazamiu0304 Rau0304majiu0304", "last_modified": {"type": "/type/datetime", "value": "2008-08-20T18:00:41.270799"}, "key": "/authors/OL1001461A", "type": {"key": "/type/author"}, "revision": 2}

Мне удается восстановить большую часть информации, но на 10000 строк некоторые из них имеют неправильный формат.

Я получаю ошибку, подобную этой:

json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 148 (char 147)

А вот мой код, который работает в правильных строках:

import json


with open('openlibrarytest.json') as file:
    for i in range(9998):
        line = file.readline()
        content_json = json.loads(line)
        if not "name" in line:
            # print('NULL')
            ligne.append("NULL")
            continue
        try:
            # print(content_json['name'])
            ligne.append(content_json['name'])
        except IndexError:
            print(line)

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

Или другая альтернатива игнорировать строку, где есть ошибка, и продолжать просматривать мой файл.

Не стесняйтесь задавать мне вопросы, если он неясен.

Заранее благодарю за ответ.

...