在解析JSON时使用Python
有时(不经常)下面的JSON会有额外的字段 在在解析JSON时使用Python,python,json,Python,Json,有时(不经常)下面的JSON会有额外的字段 在EventName和EventSources之间调用Username 例如: "EventName": "AssumeRole", "EventSource": "sts.amazonaws.com", "Username": "someuser" 有时情况并非如此(如下所示) 我想创建if-else,所以如果有“Username”:“someuser”,则打印一个输出,如果没有,则打印另一个输出 with open('1.json') as fi
EventName
和EventSources
之间调用Username
例如:
"EventName": "AssumeRole",
"EventSource": "sts.amazonaws.com",
"Username": "someuser"
有时情况并非如此(如下所示)
我想创建if-else,所以如果有“Username”:“someuser”,则打印一个输出,如果没有,则打印另一个输出
with open('1.json') as file:
data = json.load(file)
with open('cloudtrail.csv', 'wt') as file:
#file.write('ResourceType,ResourceName,EventName,UserName\n')
for element in data['Events']:
if element['Username']:
for resource in element['Resources']:
print(resource['ResourceType'] + ',' + resource['ResourceName'] + ',' + element['EventName'] + ',' + element['Username'])
else:
print(resource['ResourceType'] + ',' + resource['ResourceName'] + ',' + element['EventName'])
但是面对这一点(因为元素['Username']
不存在):
使用
try except
语句
try:
username = element['Username']
except KeyError:
# Deal with it
username = None
# note that the try statement does not create a new scope
if username is not None:
print(username)
您可以轻松地将此结构重新用于其他键
为了完整起见,我应该注意,您还可以将
else
和finally
与try except
一起使用。else
语句仅在未执行except
时执行。无论发生什么情况,finally
都将运行。使用try except
语句
try:
username = element['Username']
except KeyError:
# Deal with it
username = None
# note that the try statement does not create a new scope
if username is not None:
print(username)
您可以轻松地将此结构重新用于其他键
为了完整起见,我应该注意,您还可以将else
和finally
与try except
一起使用。else
语句仅在未执行except
时执行。无论发生什么情况,最终将运行。尝试以下条件:
if 'Username' in element:
尝试以下条件:
if 'Username' in element:
IMHO这是一个更干净的解决方案,但是有些人会建议在python中IMHO这是一个更干净的解决方案,但是有些人会建议在python中是