преобразовать файл JSON в каталог текстовых файлов - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь запустить пример кода Scikit https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/datasets/twenty_newsgroups.py.

У меня есть набор данных в файле json, это пример:

{  
   "articles":[  
      {  
         "compania":"elobservador.com",
         "link":" https://www.elobservador.com.uy ",
         "title":"\"Cierto grado de estrés promueve la creatividad\"",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      },
      {  
         "compania":"ellitoral.com",
         "link":" https://www.ellitoral.com",
         "title":"La tienda para padres",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      },
      {  
         "compania":"lanacion.com",
         "link":" https://lanacion.com",
         "title":"Franquicias: proyecciones de un sistema de cara al año electoral",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      },
      {  
         "compania":"elpais.com",
         "link":" https://elpais.com",
         "title":"Caen los asesinos de dos turistas en Marruecos: afirman que fue un brutal acto terrorista filmado en video",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      },
      {  
         "compania":" elobservador.com",
         "link":" elobservador",
         "title":"Competitividad y agilidad: por qué son claves para las pymes",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      },
      {  
         "compania":"lanacion.com",
         "link":"https://www.lanacion.com.ar ",
         "title":"Masivo operativo en Brasil para capturar a un terrorista prófugo",
         "text":" El vídeo proporciona una manera eficaz para ayudarle a demostrar el punto. Cuando haga clic en Vídeo en línea, puede pegar el código para insertar del vídeo que desea agregar."
      }
   ]
}

это набор данных 20newsgroup, древовидная структура которого такова:

20news-18828 /

|-- alt.atheism

    |   |-- 49960

    |   |-- 51060

    |   |-- 51119

|-- comp.graphics

    |   |-- 37261

    |   |-- 37913

    |   |-- 37914

    |   |-- 37915

    |   |-- 37916

    |   |-- 37917

    |   |-- 37918

|-- comp.os.ms-windows.misc

    |   |-- 10000

    |   |-- 10001

    |   |-- 10002

    |   |-- 10003

    |   |-- 10004

    |   |-- 10005 

Я хочу, чтобы мой файл оставался таким:

Темы /

|-- Elobservador.com.txt

|-- ellitoral.com.txt

|-- lanacion.com.txt

|-- elpais.com.txt

|-- lanacion.com.txt

Я хочу преобразовать мой json-файл в несколько текстовых файлов, в качестве имени которых указан ключ компании. Спасибо

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать цикл for здесь:

import json
with open('yourfile.json') as fh:
    content = json.load(fh)

# go through each article in your file
for article in content['articles']:

    company = article['compania']

    # Add check for company file, if exists, add integer
    filename = '%s.txt'%company
    file_exists = os.path.isfile(filename)
    i = 1
    while file_exists:
         filename = '%s_%d.txt'%(company, i)
         file_exists = os.path.isfile(filename)
         i+=1

    # Your file name is formatted here
    with open('%s.txt' % company, 'w') as fh:
        # the indent will keep things looking nice
        fh.write(json.dumps(article, indent=3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...