Разделение данных (из файла text / json) на основе платформы (с использованием Python) - PullRequest
0 голосов
/ 31 августа 2018

Это пример данных (файл JSON) - JSON-файл заполнен точно такой же строкой, поскольку этот «JSON-файл» готов к загрузке в Big Query и ищет способ его разделения по платформам.

{"origin": {"detailed": "instagram", "source": "instagram", "platform": "instagram"}.....}
{"origin": {"detailed": "website", "source": "website", "platform": "website"}.....}
{"origin": {"detailed": "forum", "source": "forum", "platform": "forum"}.....}
{"origin": {"detailed": "twitter", "source": "twitter", "platform": "twitter"}.....}
{"origin": {"detailed": "facebook", "source": "facebook", "platform": "facebook"}.....}

Я ищу разбиение этих данных на различные текстовые файлы в зависимости от платформы.

if platform = instagram ( but some how it should be - if line contain "platform": "instagram" )
    write to post_instagram.json
if platform = facebook
    write to post_facebook.json
..............
    ...................

Какой чистый способ сделать это? - С помощью PYTHON

Пример:

with open(FILE_NAME, "r") as infile:
    Data = infileFollow.read()
    If statements?
    while statement?
    .....

with open(FILE_NAME, "w+") as outfile:
    outfile.write(Data)

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

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Вы можете использовать модуль json для python.

Затем вы можете json.load ваш файл и получить словарь в качестве вывода, а затем перебрать your_dict['origin']['platform'], чтобы записать строку в файл с именем 'post_'+platform+'.json'

0 голосов
/ 31 августа 2018

Вы можете использовать модуль JSON.

Ex:

import json
from collections import defaultdict

with open(filename) as infile:
    data = json.load(infile)     #Read JSON


res = defaultdict(list)
for i in data["data"]:
    res[i["origin"]["platform"]].append(i)

for k,v in res.items():
    with open("post_{}.json".format(k), "w") as outfile:   #Open Required file for Write.
        json.dump(v, outfile)

Образец Json в этом примере.

{
    "data": [
        {"origin": {"detailed": "instagram", "source": "instagram", "platform": "instagram"}},
        {"origin": {"detailed": "website", "source": "website", "platform": "website"}},
        {"origin": {"detailed": "forum", "source": "forum", "platform": "forum"}},
        {"origin": {"detailed": "twitter", "source": "twitter", "platform": "twitter"}},
        {"origin": {"detailed": "facebook", "source": "facebook", "platform": "facebook"}}
    ]
}
0 голосов
/ 31 августа 2018

Может быть что-то вроде:

import json 

json.dump([x for x in data if "instagram" in x["origin"]["platform"]], open("post_instagram.json", "w"))

json.dump([x for x in data if "facebook" in x["origin"]["platform"]], open("post_facebook.json", "w"))

# other platforms ...

Если данные очень велики вместо итерации всех данных для каждой "платформы":

instagram = []
facebook = []

for d in data:
    if "instagram" in d["origin"]["platform"]:
        instagram.append(d)
    elif "facebook" in d["origin"]["platform"]:
        facebook.append(d)

json.dump(instagram, open("post_instagram.json", "w"))
json.dump(facebook, open("post_facebook.json", "w"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...