Скрипт конвертации JSON в CSV в Python

Скрипт конвертации JSON в CSV в Python

Скрипт конвертации JSON в CSV в Python

Доброго времени суток! Сегодня мы рассмотрим с Вами возможный пример реализации скрипта, который будет конвертировать
переданный JSON файл в CSV формат.

Скрипт:



import json

import csv

import sys

import argparse

from jsonpath_ng import jsonpath

from jsonpath_ng.ext import parse



def extract_data_from_json(json_data, json_path):

    # Парсинг JSON-пути

    jsonpath_expr = parse(json_path)

    # Извлечение данных

    matches = jsonpath_expr.find(json_data)

    if matches:

        return matches[0].value

    else:

        raise ValueError(f"Нет данных по указанному JSON пути: {json_path}")



def json_to_csv(json_file_path, csv_file_path, json_path):

    # Загрузка JSON-данных из файла

    with open(json_file_path, 'r', encoding='utf-8') as json_file:

        data = json.load(json_file)



    # Извлечение данных по указанному пути

    extracted_data = extract_data_from_json(data, json_path)



    # Определение заголовков CSV на основе ключей первого объекта

    headers = extracted_data[0].keys()



    # Запись данных в CSV-файл

    with open(csv_file_path, 'w', newline='', encoding='utf-8') as csv_file:

        writer = csv.DictWriter(csv_file, fieldnames=headers)

        writer.writeheader()  # Запись заголовков

        writer.writerows(extracted_data)  # Запись строк данных



def main():

    # Настройка парсера аргументов командной строки

    parser = argparse.ArgumentParser(description='Конвертация JSON файла в CSV с использованием указанного JSON пути.')

    parser.add_argument('json_file', help='Путь к входному JSON файлу')

    parser.add_argument('csv_file', help='Путь к выходному CSV файлу')

    parser.add_argument('json_path', help='JSON путь для извлечения данных, например, "response.data"')



    # Парсинг аргументов командной строки

    args = parser.parse_args()



    # Преобразование JSON в CSV

    try:

        json_to_csv(args.json_file, args.csv_file, args.json_path)

        print(f'Данные успешно преобразованы из {args.json_file} в {args.csv_file}')

    except ValueError as e:

        print(f'Ошибка: {e}')



if __name__ == '__main__':

    main()


Источник

Читайте также

НЕТ КОММЕНТАРИЕВ

Оставить комментарий