Как разобрать файл JSON?

json

215 просмотра

1 ответ

71 Репутация автора

Мне нужно обработать большой файл JSON, чтобы извлечь из него информацию. Вот как выглядит мой файл:

[
  {
    "diagnoses": [
      {
        "classification_of_tumor": "not reported", 
        "last_known_disease_status": "not reported", 
        "updated_datetime": "2016-05-16T11:00:32.695517-05:00", 
        "primary_diagnosis": "c50.9", 
        "submitter_id": "TCGA-AN-A0FD_diagnosis", 
        "tumor_stage": "stage iia", 
        "age_at_diagnosis": 26007.0, 
        "vital_status": "alive", 
        "morphology": "8500/3", 
        "days_to_death": null, 
        "days_to_last_known_disease_status": null, 
        "days_to_last_follow_up": 196.0, 
        "state": null, 
        "days_to_recurrence": null, 
        "diagnosis_id": "9b0c5d28-5bd6-536f-8cfb-1e96044bce38", 
        "tumor_grade": "not reported", 
        "tissue_or_organ_of_origin": "c50.9", 
        "days_to_birth": -26007.0, 
        "progression_or_recurrence": "not reported", 
        "prior_malignancy": "not reported", 
        "site_of_resection_or_biopsy": "c50.9", 
        "created_datetime": null
      }
    ], 
    "case_id": "c6086936-7544-4da0-8c0c-114166848483", 
    "demographic": {
      "updated_datetime": "2016-05-16T11:00:32.695517-05:00", 
      "created_datetime": null, 
      "gender": "female", 
      "state": null, 
      "submitter_id": "TCGA-AN-A0FD_demographic", 
      "year_of_birth": 1939, 
      "race": "white", 
      "demographic_id": "423c153c-77d7-5e97-ae64-11442d5ba4f8", 
      "ethnicity": "not hispanic or latino", 
      "year_of_death": null
    }, 
    "exposures": [
      {
        "cigarettes_per_day": null, 
        "weight": null, 
        "updated_datetime": "2016-05-16T11:00:32.695517-05:00", 
        "alcohol_history": null, 
        "alcohol_intensity": null, 
        "bmi": null, 
        "years_smoked": null, 
        "height": null, 
        "created_datetime": null, 
        "state": null, 
        "exposure_id": "0abf6770-e176-523e-a94e-66d779c58e69", 
        "submitter_id": "TCGA-AN-A0FD_exposure"
      }
    ]
  }, 

Вывод, который меня интересует, представляет собой текстовый файл с двумя столбцами, где первый столбец - tumour_stage, а второй столбец - case_id . Для этого примера это будет выглядеть так:

stage iia      c6086936-7544-4da0-8c0c-114166848483
Автор: Robin Источник Размещён: 18.07.2016 03:30

Ответы (1)


1 плюс

124344 Репутация автора

Решение

Вот программа Python, которая выполняет преобразование, которое вы просите. Скопируйте этот код в файл с именем, например, «convert.py». Затем вы можете запустить программу так:

python convert.py my_existing_file.json my_new_file.txt

Вот программа:

import argparse
import json


# Get filenames from user
parser = argparse.ArgumentParser()
parser.add_argument(
    'input', type=argparse.FileType('r'), help="input JSON filename")
parser.add_argument(
    'output', type=argparse.FileType('w'), help="output 2-col text filename")
args = parser.parse_args()

# Read data in
data = json.load(args.input)

# Convert data to abstracted format
data = [[d["diagnoses"][0]["tumor_stage"], d["case_id"]] for d in data]

# Write the data out:
for d in data:
    args.output.write("{}\t{}\n".format(*d))
Автор: Robᵩ Размещён: 19.07.2016 08:02
Вопросы из категории :
32x32