Python构建AWS角色ARN列表时移除多余单引号的方法
问题:移除AWS角色ARN生成时的多余单引号
我正在构建AWS角色的资源列表,现有示例字典如下:
shared ={ "mts":{ "account_id":"11111", "workbench":"aaaaa", "prefix":"rad600-ars-sil,rad600-srr-sil-stage1,rad600-srr-sil-stage2" }, "tsf":{ "account_id":"22222", "workbench":"bbbbb", "prefix":"yyyy" } }
我用以下代码生成role_arn列表:
role_arn=[] for key in shared: role_arn.append(f"arn:aws:iam::'{shared[key]['account_id']}':role/'{shared[key]['workbench']}'_role")
当前输出结果里包含多余的单引号:
["arn:aws:iam::'11111':role/'aaaaa'_role", "arn:aws:iam::'22222':role/'bbbbb'_role"]
我希望生成的ARN里没有这些单引号,得到如下目标输出:
["arn:aws:iam::11111:role/aaaaa_role", "arn:aws:iam::22222:role/bbbbb_role"]
我刚接触Python,请问该怎么实现?
解决方法
问题出在你写的f-string里——你手动给account_id和workbench的值加了单引号,这些单引号会被直接拼接到结果里。只需要把f-string里的单引号去掉就行:
role_arn=[] for key in shared: role_arn.append(f"arn:aws:iam::{shared[key]['account_id']}:role/{shared[key]['workbench']}_role")
运行这段修正后的代码,就能得到你想要的无单引号的ARN列表。
另外,如果你想让代码更简洁,还可以用列表推导式一行完成:
role_arn = [f"arn:aws:iam::{v['account_id']}:role/{v['workbench']}_role" for v in shared.values()]
这个写法和循环的效果完全一致,只是更紧凑。
内容的提问来源于stack exchange,提问作者Sumanth Shetty
相关产品推荐
相关产品推荐

