Могу ли я "посчитать", сколько раз поле / имя в файле json встречается с использованием python?Мне не нужно значение в поле, но имя вхождения - PullRequest
0 голосов
/ 19 сентября 2018

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

{  
   "_id":"123adfvssw",
   "content_type":"video",
   "content_id":"12345",
   "commenter":{  
      "display_name":"student2",
      "name":"student2",
      "type":"user",
   },
   "source":"chat",
   "state":"published",
   "message":{  
      "body":"the world",
      "fragments":[  
         {  
            "text":"the world"
         }
      ],
      "is_action":false
   },
   "more_replies":false
}
{  
   "_id":"123adfvssw",
   "content_type":"video",
   "content_id":"12345",
   "commenter":{  
      "display_name":"student",
      "name":"student",
      "type":"user",
   },
   "source":"chat",
   "state":"published",
   "message":{  
      "body":"the space",
      "fragments":[  
         {  
            "text":"the space"
         }
      ],
      "is_action":false
   },
   "more_replies":false
}

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

Например:

FileName Commenters 2


У меня есть код, но я застреваю, когда дело доходит до подсчетапоявление имен полей, а не их значений.

import json
import  requests
>>> from collections import Counter
>>> filepath="/chatinfo.txt"
>>> with open(filepath) as f:
...     for line in f:
...             jsondata = json.loads(line)
...             dictjson = json.dumps(jsondata)
...             len(jsondata["commenter"])

Однако len считает количество полей, вложенных в поле commenter.

Может кто-нибудь дать мне представление о том, что яможно использовать для подсчета вхождения имени поля комментатора и, возможно, для создания исключения, если поле комментатора нет?

1 Ответ

0 голосов
/ 19 сентября 2018

Попробуйте это

num_with_field = 0
for line in f:
    jsondata = json.loads(line)
    dictjson = json.dumps(jsondata)
    if "commenter" in jsondata:
        num_with_field += 1

Ключевое слово in проверяет, содержит ли данный словарь заданный ключ.

Запись полученного файла оставлена ​​вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...