Конвертировать JSON в CSV

PythonBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь конвертировать данные в формате JSON в формат CSV с использованием Python. Это распространенная задача в области науки о данных и разработке, так как JSON часто используется для ответов API, а CSV - популярный формат для хранения табличных данных.

👀 Предварительный просмотр

$ head result.csv
"IP","Статус","Время","HttpReferer","HttpUserAgent","Запрос","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (совместимый; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (совместимый; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (совместимый; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, как Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, как Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

🎯 Задачи

В этом проекте вы научитесь:

  • Читать и понимать данные в формате JSON
  • Конвертировать данные в формате JSON в CSV-файл
  • Записывать CSV-файл с правильными именами столбцов и форматом

🏆 Достижения

После завершения этого проекта вы сможете:

  • Эффективно конвертировать данные в формате JSON, полученные из API, в структурированный формат CSV
  • Разобраться в процессе разбора данных в формате JSON и записи их в CSV-файл
  • Применить эти навыки к различным задачам обработки и анализа данных

Прочитать и понять данные в формате JSON

В этом шаге вы научитесь читать и понимать данные в формате JSON из файла web_access.json.

  1. Откройте файл web_access.json, расположенный в директории ~/project, с использованием текстового редактора.
  2. Просмотрите содержимое файла. Вы должны увидеть массив объектов, где каждый объект представляет собой запись в журнале доступа к веб-ресурсу. Каждая запись имеет несколько свойств, таких как "IP", "Статус", "Время", "HttpReferer", "HttpUserAgent", "Запрос", "HttpXForwardedFor", "BodyBytesSent", "RemoteUser" и "RequestLength".
  3. Ознакомьтесь с структурой и содержанием данных в формате JSON. Эта информация будет полезной на следующем шаге при конвертации данных в формат CSV.
✨ Проверить решение и практиковаться

Конвертировать JSON в CSV

В этом шаге вы научитесь конвертировать данные в формате JSON из файла web_access.json в CSV-файл.

  1. Создайте новый файл Python под названием convert.py в директории ~/project.
  2. В файле convert.py импортируйте необходимые библиотеки:
import csv
import json
  1. Прочитайте данные в формате JSON из файла web_access.json:
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)
  1. Определите порядок столбцов в CSV-файле:
fieldnames = [
    "IP",
    "Статус",
    "Время",
    "HttpReferer",
    "HttpUserAgent",
    "Запрос",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]
  1. Откройте новый CSV-файл под названием result.csv в директории ~/project и создайте объект csv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
  1. Запишите строку заголовка в CSV-файл:
writer.writeheader()
  1. Запишите строки данных в CSV-файл:
for row in data:
    writer.writerow(row)

Ваш полный файл convert.py должен выглядеть так:

import csv
import json

## Read JSON data from the file
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)

## Define the order of columns
fieldnames = [
    "IP",
    "Статус",
    "Время",
    "HttpReferer",
    "HttpUserAgent",
    "Запрос",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]

## Writing to CSV file
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)

    ## Writing header
    writer.writeheader()

    ## Writing data rows
    for row in data:
        writer.writerow(row)
✨ Проверить решение и практиковаться

Запустить Python-скрипт

В этом шаге вы запустите скрипт convert.py для генерации файла result.csv.

  1. Откройте терминал и перейдите в директорию ~/project.
  2. Запустите скрипт convert.py с использованием следующей команды:
python convert.py
  1. После завершения работы скрипта в директории ~/project должен появиться новый файл с именем result.csv.
  2. Вы можете просмотреть первые 10 строк файла result.csv с использованием следующей команды:
head result.csv

В результате должны быть выведены строка заголовка и первые 9 строк данных CSV-файла.

"IP","Статус","Время","HttpReferer","HttpUserAgent","Запрос","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (совместимый; MSIE 7.0; Windows NT 5.1; Trident/4.0;.NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (совместимый; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (совместимый; MSIE6.0; Windows NT 5.0;.NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, как Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, как Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (совместимый; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

Поздравляем! Вы успешно конвертировали данные в формате JSON из файла web_access.json в CSV-файл с именем result.csv.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.