Anzeigen des COVID 19-Infektionsstatus in Japan mit Splunk (überarbeitete 2. Ausgabe) verwendet Python, um Daten von HP herunterzuladen und in CSV zu verarbeiten.
Splunk hat keine "Pandas" und es scheint, dass der Schwellenwert für Leute mit Windows hoch ist, also habe ich mein Bestes mit Python in Splunk versucht.
dl_json_to_csv2.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import csv
headers={'accept': 'application/json', 'content-type': 'application/json'}
url = 'https://www3.nhk.or.jp/news/special/coronavirus/data/47patients-data.json'
response=requests.get(url,headers=headers)
json_obj = response.json()
##Speicherung von Datumsdaten
header=["pref"]+[i for i in list(json_obj['category'])]
##Speicherung von Nummerndaten infizierter Personen
lst = [[] for _ in range(len(json_obj['data47']))] ##Initialisieren
for j,json in enumerate(json_obj['data47']):
lst[j].append(json['name'])
for json2 in json['data']:
lst[j].append(json2)
##CSV-Schreiben
with open('japan_covid19.csv', 'w', encoding='UTF-8',newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(lst)
Ich habe es geschafft, den obigen Code zu bekommen
splunk
$SPLUNK_HOME/bin/splunk cmd python3 ./dl_json_to_csv2.py
Betrieb bestätigt mit
dl_json_to_csv2.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import csv
headers={'accept': 'application/json', 'content-type': 'application/json'}
url = 'https://www3.nhk.or.jp/news/special/coronavirus/data/47patients-data.json'
response=requests.get(url,headers=headers)
json_obj = response.json()
lst = [['pref']+json_obj['category']] + [[json['name']]+json['data'] for json in json_obj['data47']]
with open('japan_covid19.csv', 'w', encoding='UTF-8',newline='') as f:
writer = csv.writer(f)
writer.writerows(lst)
: erstaunt: Zu fortgeschrittene Fähigkeiten sind Magie.
python
a=['1']
b=['2','3']
c=[a+b]
d=['4']
c+d
Das Ergebnis von
[['1', '2', '3'], '4']
Wenn Sie list
in []
einschließen, wird es zu einer Liste in der Liste.
python
d={'data47':[{'name':'4','data':['5','6','7']},{'name':'8','data':['9','10','11']}]}
e=[[json['name']] + json['data'] for json in d['data47']]
e
Das Ergebnis von
[['4', '5', '6', '7'], ['8', '9', '10', '11']]
Deshalb
python
a=['1']
b=['2','3']
c=[a+b]
d={'data47':[{'name':'4','data':['5','6','7']},{'name':'8','data':['9','10','11']}]}
e=[[json['name']] + json['data'] for json in d['data47']]
c+e
[['1', '2', '3'], ['4', '5', '6', '7'], ['8', '9', '10', '11']]
e
ist eine Liste
Ausdruck mit Variablen für Variablen in der Liste
--Ausdruck: [json ['name']] + json ['data']
--Variable: json
--Liste: d ['data47']
Zum Beispiel
python
d={'data47':[{'name':'4','data':['5','6','7']},{'name':'8','data':['9','10','11']}]}
e=[json['name'] + json['data'] for json in d['data47']]
e
Dann Type Error: kann nur str (nicht" list ") mit str
verketten.
Die Rückgabe von "json [" name "]" ist "str", während "json [" data "]" is "list" ist
list
Sie können nur miteinander kombinieren.
: smile_imp: Ich verstehe etwas.
Ich habe es gemacht, während ich überprüft habe, welches Array mit type ()
verwendet wurde.
Ich war süchtig danach, eine Liste in der Liste zu erstellen, und es stellte sich heraus, dass es sich um unangenehmen Code handelte.
~~ Wird gerade korrigiert. ~~ Ich hatte Pythonista es korrigieren.
~~ Wenn es sauber ist, möchte ich es für das ~~ Splunk-Dashboard verwenden.
Recommended Posts