回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<pre><code>{
"RouteTables": [
{
"Associations": [],
"RouteTableId": "rtb-ce3c7daa",
"VpcId": "vpc-87cf4de3",
"PropagatingVgws": [],
"Tags": [
{
"Value": "ItMgmtUsEastPublic",
"Key": "Name"
}
],
"Routes": [
{
"GatewayId": "local",
"DestinationCidrBlock": "192.168.254.0/23",
"State": "active",
"Origin": "CreateRouteTable"
},
{
"GatewayId": "igw-961518f3",
"DestinationCidrBlock": "0.0.0.0/0",
"State": "active",
"Origin": "CreateRoute"
}
]
},
{
"Associations": [
{
"RouteTableAssociationId": "rtbassoc-27e68942",
"Main": true,
"RouteTableId": "rtb-92ff64f7"
}
],
"RouteTableId": "rtb-92ff64f7",
"VpcId": "vpc-b8fc75dd",
"PropagatingVgws": [],
"Tags": [],
"Routes": [
{
"GatewayId": "local",
"DestinationCidrBlock": "172.31.0.0/16",
"State": "active",
"Origin": "CreateRouteTable"
},
{
"GatewayId": "igw-27cd1542",
"DestinationCidrBlock": "0.0.0.0/0",
"State": "active",
"Origin": "CreateRoute"
}
]
}
</code></pre>
<p>我想在<code>Tags[]</code>中有值的情况下解析这个JSON写它,否则打印<code>No Tag</code>行作为标记</p>
<p>我有这个密码:</p>
<pre><code>with open('1.json') as file:
data = json.load(file)
for element in data['RouteTables']:
s=element['RouteTableId'] + ',' + element['VpcId']
if 'Tags' in element:
for route in element['Tags']:
d = route['Value']
else:
d = 'No Tag'
for route in element['Routes']:
r=route['DestinationCidrBlock']
print s+','+d+','+r
</code></pre>
<p>不管是否有标记,它都打印<code>No Tag</code></p>
<p>期望输出:</p>
<pre><code>rtb-ce3c7daa,vpc-87cf4de3,ItMgmtUsEastPublic,192.168.254.0/23
rtb-ce3c7daa,vpc-87cf4de3,ItMgmtUsEastPublic,0.0.0.0/0
rtb-92ff64f7,vpc-b8fc75dd,No Tag,172.31.0.0/16
rtb-92ff64f7,vpc-b8fc75dd,No Tag,0.0.0.0/0
</code></pre>
<p>当前结果:</p>
<pre><code>rtb-ce3c7daa,vpc-87cf4de3,No Tag,192.168.254.0/23
rtb-ce3c7daa,vpc-87cf4de3,No Tag,0.0.0.0/0
rtb-92ff64f7,vpc-b8fc75dd,No Tag,172.31.0.0/16
rtb-92ff64f7,vpc-b8fc75dd,No Tag,0.0.0.0/0
</code></pre>