Получение неверного файла json с помощью python for loop - PullRequest
0 голосов
/ 06 февраля 2019

привет, во-первых, я пытаюсь создать бота для веб-скребка, а затем сохранить всю информацию в файле json, но при зацикливании мой json недействителен

это часть моего кода, и где я нахожусьсоздание json

for tag in tags:
             myarr=tag.getText(strip=True)
             words=myarr.split()
             titles = []
             titles.append(words)
             data = [{"data": w} for w in zip(titles)]



             with open('data.json', 'a+',encoding='utf-8') as f:  

              json.dump(data, f,indent=2, ensure_ascii=False)

, и это часть моего недопустимого файла json, который был сгенерирован python

[
  {
    "data": [
      [
        "Acuña",
        "Game",
        "GermánEspecialidad:Tratamiento",
        "del",
        "DolorLugar",
        "de",
        "Atención:Centro",
        "de",
        "Diagnóstico",
        "1"
      ]
    ]
  }
][
  {
    "data": [
      [
        "Aguayo",
        "Baeza",
        "EdgardoEspecialidad:Reumatología",
        "AdultosLugar",
        "de",
        "Atención:Centro",
        "de",
        "Diagnóstico",
        "1",
        "Piso",
        "7"
      ]
    ]
  }
]

при попытке проанализировать этот json в онлайн-анализаторе json, он говорит SyntaxError:Неожиданный токен [в JSON в позиции 318

есть ли способ сгенерировать действительный json?если да, кто-нибудь, кто может мне помочь?

1 Ответ

0 голосов
/ 07 февраля 2019

Модуль Python json напрямую не поддерживает создание файла json постепенно *.Допустимый json может быть сгенерирован путем добавления каждого каждого dict к списку, а затем выгрузки списка в выходной файл, например:

data = []
for tag in tags:
     myarr=tag.getText(strip=True)
     words=myarr.split()
     titles = []
     titles.append(words)
     data.extend({"data": w} for w in zip(titles))

# Once all the data has been processed, write to file.  
with open('data.json', 'w',encoding='utf-8') as f:  
    json.dump(data, f,indent=2, ensure_ascii=False)

* Из документов для json.dump :

... попытка сериализации нескольких объектов с повторными вызовами dump () с использованием одного и того же fp приведет к неверному файлу JSON

...