[PYTHON] Ich konvertiere AWS JSON-Daten wie folgt in CSV

Bei Projekten mit AWS gibt es einige Fälle, in denen Sie eine Liste von AMIs dokumentieren möchten.

In einem solchen Fall möchten Sie manchmal Daten in JSON mit der offiziellen AWS-CLI erfassen, in CSV konvertieren und dann in ein Dokument kompilieren. Tabellendaten, die in Dokumenten häufig vorkommen, sind sehr inkompatibel mit JSON, was ein Problem darstellt.

Tun Sie dies in einem solchen Fall. Angenommen, Sie können den JSON der AMI-Liste wie folgt abrufen.

images.json


{
    "Images": [
        {
            "VirtualizationType": "hvm", 
            "Name": "hogehoge_1", 
            "Hypervisor": "xen", 
            "SriovNetSupport": "simple", 
            "ImageId": "ami-99999991", 
            "State": "available", 
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda", 
                    "Ebs": {
                        "DeleteOnTermination": true, 
                        "SnapshotId": "snap-9999999d", 
                        "VolumeSize": 100, 
                        "VolumeType": "standard", 
                        "Encrypted": false
                    }
                }
            ], 
            "Architecture": "x86_64", 
            "ImageLocation": "999999999993/hogehoge1", 
            "RootDeviceType": "ebs", 
            "OwnerId": "999999999999", 
            "RootDeviceName": "/dev/xvda", 
            "CreationDate": "2014-12-17T06:35:39.000Z", 
            "Public": false, 
            "ImageType": "machine", 
            "Description": null
        }, 
        {
            "VirtualizationType": "hvm", 
            "Name": "hogehoge_2", 
            "Hypervisor": "xen", 
            "SriovNetSupport": "simple", 
            "ImageId": "ami-99999991", 
            "State": "available", 
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda", 
                    "Ebs": {
                        "DeleteOnTermination": true, 
                        "SnapshotId": "snap-9999999d", 
                        "VolumeSize": 100, 
                        "VolumeType": "standard", 
                        "Encrypted": false
                    }
                }
            ], 
            "Architecture": "x86_64", 
            "ImageLocation": "999999999993/hogehoge1", 
            "RootDeviceType": "ebs", 
            "OwnerId": "999999999999", 
            "RootDeviceName": "/dev/xvda", 
            "CreationDate": "2014-12-17T06:35:39.000Z", 
            "Public": false, 
            "ImageType": "machine", 
            "Description": null
        }, 
    ]
}

Ändern Sie diesen JSON mithilfe von Python in CSV. Ich habe es improvisiert, also denke ich, dass es verschiedene Anstürme gibt, aber es tut mir leid. Es tut mir wirklich leid.

sample.py


# coding:UTF-8
import json
import codecs

#Variablendefinition. Kitto
sourcefilename = "images.json"
outfilename = "outfile.csv"
targetDataName = "Images"
#Funktionsdefinition
def list2str(srclist,startStr,endStr):
    #Wenn es keine Liste ist, konvertieren Sie sie nicht.
    if not (isinstance(srclist,list)):
        return srclist
    #Liste in Zeichenfolge ändern
    resultStr = ""
    resultStr += startStr
    for item in srclist:
        tmp = ""
        if isinstance(item,str):
            tmp += item +","
        elif isinstance(item,list):
            tmp += list2str(item,"","") + ","
        else:
            tmp += str(item) + ","
        resultStr += tmp
    resultStr += endStr
    return resultStr

#Datei lesen
sourceFile = open(sourcefilename,"r")
sourceData = json.load(sourceFile)
sourceFile.close()
#Holen Sie sich die gewünschten Daten aus JSON-Daten
targetData = sourceData.get(targetDataName)

#Header abrufen
headerSet = set()
for row in targetData:
    colList = row.keys()
    for colName in colList:
        headerSet.add(colName)
headerstr = ""
for headerName in headerSet:
    headerstr += headerName + ","
#Header-Erfassung abgeschlossen

#Datenerfassung
datalist = list()
for row in targetData:
    rowstr = ""
    for colName in headerSet:
        if isinstance(row.get(colName),list):
            rowstr += list2str(row.get(colName),"\"","\"") + ","
        elif isinstance(row.get(colName),bool):
            tmpStr = str(row.get(colName))
            rowstr += tmpStr + ","
        elif isinstance(row.get(colName),unicode):
            rowstr += row.get(colName) + ","
        elif isinstance(row.get(colName),type(None)):
            rowstr += "None,"
    datalist.append(rowstr)

#Öffnen Sie die Schreibdatei
outfile = codecs.open(outfilename,"w", "shift_jis")
outfile.write(headerstr + "\n")
for rowstr in datalist:
    outfile.write(rowstr + "\n")
outfile.close()

Jetzt können Sie CSV-Daten erstellen. Nach der Konvertierung in CSV-Daten können diese in Excel geöffnet und auf verschiedene Arten bearbeitet werden.

Ich kannte Python vorher nicht, also habe ich Werkzeuge in Java erstellt, aber Python ist sehr praktisch. Für die AWS CLI ist Python erforderlich, sodass kein neues Python hinzugefügt werden muss. Ich denke, ich werde Python ernsthaft studieren.

Ich hoffe, Sie finden es nützlich.

Recommended Posts

Ich konvertiere AWS JSON-Daten wie folgt in CSV
Konvertieren Sie Excel-Daten mit Python in JSON
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Konvertieren Sie json in Excel
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
So konvertieren Sie Json-Dateien in das CSV- oder EXCEL-Format
Konvertieren Sie SDF schnell in CSV
Konvertieren Sie das Tweepy Status-Objekt in JSON
Ich möchte vertikal gehaltene Daten (langer Typ) in horizontal gehaltene Daten (breiter Typ) konvertieren.
[Data Science-Grundlagen] Ich habe versucht, mit Python von CSV auf MySQL zu speichern
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich habe versucht, mit Django eine CSV-Upload-, Datenverarbeitungs- und Download-Funktion zu erstellen
[Python] So konvertieren Sie eine Datenbankdatei in CSV
Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
Dateneingabe / -ausgabe in Python (CSV, JSON)
So konvertieren Sie csv in tsv in CLI
[Python] Konvertieren Sie CSV-Dateibegrenzer in Tabulatortrennzeichen
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren (komprimieren) formatierte JSON-Zeichenfolge in einzeiliges JSON
[MNIST] Konvertiert Daten für Keras in PNG
Konvertieren Sie Rasterdaten mithilfe von Pandas in zeilenhaltige (?) Daten
Ich möchte mit aws mit Python spielen
Ich habe versucht, die verkratzten Daten in CSV zu speichern!
Konvertieren Sie ein Array (struct) mit golang in json
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Konvertieren Sie CSV- und TsV-Daten in eine Matrix mit Python als Beispiel für MovieLens
Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
Konvertieren Sie Daten mit Form (Anzahl der Daten, 1) in (Anzahl der Daten,) mit numpy.
[Python] Konvertieren von DICOM in PNG oder CSV
[Einführung in json] Nein, ich war süchtig danach. .. .. ♬
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Ich möchte CSV-Dateien mit Vega-Lite visualisieren!
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
[Einführung in Python] Umgang mit Daten im JSON-Format
Konvertieren Sie UTF-8-CSV-Dateien in Excel
Ich möchte die Daten von League of Legends ③ erhalten
Ich möchte die Daten von League of Legends ② erhalten
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Konvertieren Sie XLSX in CSV in der Befehlszeile
Ich möchte League of Legends-Daten erhalten ①
Ich würde gerne etwas über Django Page Nation erfahren
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL