Python KeyError if logic or try logic -


i'm trying loop through json data export csv , going until portion of data need field values these fields not exist beneath "tags".

i'm getting error of:

for alarm in tag["alarmst"]:         keyerror: 'alarmst'

i believe built-in exceptions reading means key/field not exist.

i read in errors , exceptions can put logic in try statement say, if key not exist, don't give me error , else or move onto next set of records beneath "tag" "alarmst" , dump (and other fields specified) file.

i'm having trouble figuring out how tell logic stop giving me error , use csv_file.writerow() function field values if "alarmst" exist.

since working 1 file , processes before python process runs "devs" , "tags" own csv files, cannot parse data , cut down on loops within other loops.

i'm not sure if issue if tag["alarmst"] in tag: due there being many loops within others, or if need use try statement somehow instead, or if i'm not doing else correctly since i'm new python @ level of coding seems work need far.

i'm running on windows 10 os if makes difference assume doesn't.

starting code:

import json import csv  open('c:\\folder\\dev\\tagalarms.txt',"r") file:     data = json.load(file)  open('c:\\folder\\dev\\tagalarms.csv',"w",newline='') file:     csv_file = csv.writer(file)     dev in data["devs"]:         tag in dev["tags"]:             alarm in tag["alarmst"]:                 csv_file.writerow(alarm['datestatus'],[alarm['datestart'], alarm['status'], alarm['type']]) 

if code:

import json import csv  open('c:\\folder\\dev\\tagalarms.txt',"r") file:     data = json.load(file)  open('c:\\folder\\dev\\tagalarms.csv',"w",newline='') file:     csv_file = csv.writer(file)     dev in data["devs"]:         tag in dev["tags"]:             alarm in tag["alarmst"]:                 if tag["alarmst"] in tag:                     csv_file.writerow(alarm['datestatus'],[alarm['datestart'], alarm['status'], alarm['type']]) 

tag["alarmst"] throws error. means getting value tag associated key "alarmst" , there no such key fails. if tag["alarmst"] in tag throw same error, , won't reach point if it's below for alarm in tag["alarmst"]:. want is:

if "alarmst" in tag:     alarm in tag["alarmst"]: 

but nicer is:

for alarm in tag.get("alarmst", []): 

get similar usual square bracket access second argument default if key not found. if "alarmst" not in dictionary be:

for alarm in []: 

which empty loop won't run @ all.


Comments

Popular posts from this blog

asynchronous - C# WinSCP .NET assembly: How to upload multiple files asynchronously -

aws api gateway - SerializationException in posting new Records via Dynamodb Proxy Service in API -

asp.net - Problems sending emails from forum -