Afficher le statut de l'infection COVID19 au Japon avec Splunk (2e édition révisée) utilise python pour télécharger les données de HP et les traiter en CSV.
Splunk n'a pas de pandas
, et il semble que le seuil soit élevé pour les utilisateurs de Windows, alors j'ai fait de mon mieux avec python dans Splunk.
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()
##Stockage des données de date
header=["pref"]+[i for i in list(json_obj['category'])]
##Stockage des données de numéro de personne infectée
lst = [[] for _ in range(len(json_obj['data47']))] ##Initialisation
for j,json in enumerate(json_obj['data47']):
lst[j].append(json['name'])
for json2 in json['data']:
lst[j].append(json2)
##Écriture CSV
with open('japan_covid19.csv', 'w', encoding='UTF-8',newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(lst)
J'ai réussi à obtenir le code ci-dessus
splunk
$SPLUNK_HOME/bin/splunk cmd python3 ./dl_json_to_csv2.py
Opération confirmée avec
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)
: étonné: Une compétence trop avancée est magique.
python
a=['1']
b=['2','3']
c=[a+b]
d=['4']
c+d
Le résultat de
[['1', '2', '3'], '4']
Si vous placez list
dans []
, cela devient une liste dans la 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
Le résultat de
[['4', '5', '6', '7'], ['8', '9', '10', '11']]
Donc
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` est une liste
--Inclusion complète: ʻExpression utilisant des variables pour les variables dans la liste --Expression:
[json ['nom']] + json ['données'] --Variable:
json --Liste:
d ['data47']`
Par exemple
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
Puis Erreur de type: peut seulement concaténer str (pas" list ") à str
.
Le retour de json ['name']
est str
, alors que json ['data'] ʻis
list
list` Vous ne pouvez combiner que les uns avec les autres.
: smiling_imp: Je comprends quelque chose.
Je l'ai fait en vérifiant quel tableau était utilisé avec type ()
.
J'étais accro à faire une liste dans la liste, et cela s'est avéré être un code maladroit.
~~ En cours de correction. ~~ J'ai demandé à pythonista de le corriger.
~~ Quand il est propre, j'aimerais l'utiliser pour le tableau de bord ~~ Splunk.
Recommended Posts