将变量放入字符串(引号)python

oaxa6hgo  于 2023-01-01  发布在  Python
关注(0)|答案(3)|浏览(149)

调用双引号内的变量值时遇到问题
下面是我的代码:

AccountID = ["1234567","5678912"]
for account in range(len(AccountID)):
    response = sts.assume_role(RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"), RoleSessionName="learnaws-test-session")
    print(response)

我有没有变量值的返回响应输出

File "test3.py", line 19
    response = (RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"), RoleSessionName="learnaws-test-session")
                       ^
SyntaxError: invalid syntax

如何返回预期结果,例如:

arn:aws:iam::1234567:role/Cloudbees_Jenkins
arn:aws:iam::5678912:role/Cloudbees_Jenkins
oipij1gg

oipij1gg1#

你可以使用f-string,这是在python中引用print语句中变量的一种非常方便的方式。
在您的情况下,它看起来像这样:

response = f"arn:aws:iam::{int(AccountID[0])}:role/Cloudbees_Jenkins"
wrrgggsh

wrrgggsh2#

response = (RoleArn=(f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"), RoleSessionName="learnaws-test-session")

这里的问题与生成字符串无关。
问题在于,在Python中,=(赋值)操作符不产生输出值。
所以表达式RoleArn = ...a_bunch_of_stuff...只将这些值赋给RoleArn,它不会产生任何可以赋给response的输出值。
并且赋值RoleSessionName="learnaws-test-session"不会产生任何返回值,该返回值可以被赋值为被赋值给RoleArn的元组的一部分。
因此,只需将代码分成三行:

RoleSessionName="learnaws-test-session"
RoleArn= f"arn:aws:iam::{AccountID[account]}:role/Cloudbees_Jenkins"
response = (RoleArn, RoleSessionName)

在最新的Python版本(Python 3.8及更新版本)中,可以使用“walrus operator”:=来赋值和返回表达式中使用的值,但在代码中不应该这样做,因为IMO会使代码变得不那么清晰。

irtuqstp

irtuqstp3#

AccountID = [1234567,5678912]
for i in AccountID:
    print("arn:aws:iam::",i,"role/Cloudbees_Jenkins")

相关问题