python 在转义的 JSON 字符串中使用变量
python use variable in escaped JSON string
我正在使用 AWS SES send_templated_email 方法。
它使用一个名为 TemplateData 的参数
TemplateData – 包含键值对的转义 JSON 字符串。键对应于模板中的变量(例如,{{name}})。这些值表示替换电子邮件中变量的内容。
如果我使用硬编码,像这样:
TemplateData="""{\"quarter_num\":\"Q2\",
\"year\":\"2021\",
}"""
这个有效
但是如果我想在该字符串中使用变量,例如:
TemplateData="""{\"quarter_num\":\"{}\",
\"year\":\"{}\",
}""".format("Q2", "2021")
这行不通。我认为这是一个逃避问题,但我无法弄清楚如何正确地做到这一点。
这是我收到的错误消息:
[ERROR] KeyError: '"quarter_num"'
Traceback (most recent call last):
File "/var/task/email_reports.py", line 35, in email_users
}""".format("Q2", "2021")
当我使用硬编码字符串时,这没有任何问题。
您不需要在多行字符串中转义引号:
In [5]: TemplateData=f"""{{"quarter_num":"{"Q2"}",
...: "year":"{2021}"}}"""
Out[5]: '{"quarter_num":"Q2",\n "year":"2021"}'
在这个例子中我使用了 f-string,你只需要用双大括号来转义它们
不要尝试将其写成带有插值变量的字符串。那就是疯狂。写一个 Python dict
,然后使用 json.dumps()
.
将其转换为字符串
TemplateData = json.dumps({"quarter_num": "Q2",
"year": "2021",
})
那么如何用变量替换一些数据就很明显了。例如:
TemplateData = json.dumps({"quarter_num": "Q%s" % quarter,
"year": year,
})
这样,您的 IDE 可以帮助您编写字典,并且 Python 本身会检查您的语法,如果所有内容都在一个丑陋的大字符串中,这就不会发生。
我正在使用 AWS SES send_templated_email 方法。 它使用一个名为 TemplateData 的参数 TemplateData – 包含键值对的转义 JSON 字符串。键对应于模板中的变量(例如,{{name}})。这些值表示替换电子邮件中变量的内容。
如果我使用硬编码,像这样:
TemplateData="""{\"quarter_num\":\"Q2\",
\"year\":\"2021\",
}"""
这个有效
但是如果我想在该字符串中使用变量,例如:
TemplateData="""{\"quarter_num\":\"{}\",
\"year\":\"{}\",
}""".format("Q2", "2021")
这行不通。我认为这是一个逃避问题,但我无法弄清楚如何正确地做到这一点。 这是我收到的错误消息:
[ERROR] KeyError: '"quarter_num"'
Traceback (most recent call last):
File "/var/task/email_reports.py", line 35, in email_users
}""".format("Q2", "2021")
当我使用硬编码字符串时,这没有任何问题。
您不需要在多行字符串中转义引号:
In [5]: TemplateData=f"""{{"quarter_num":"{"Q2"}",
...: "year":"{2021}"}}"""
Out[5]: '{"quarter_num":"Q2",\n "year":"2021"}'
在这个例子中我使用了 f-string,你只需要用双大括号来转义它们
不要尝试将其写成带有插值变量的字符串。那就是疯狂。写一个 Python dict
,然后使用 json.dumps()
.
TemplateData = json.dumps({"quarter_num": "Q2",
"year": "2021",
})
那么如何用变量替换一些数据就很明显了。例如:
TemplateData = json.dumps({"quarter_num": "Q%s" % quarter,
"year": year,
})
这样,您的 IDE 可以帮助您编写字典,并且 Python 本身会检查您的语法,如果所有内容都在一个丑陋的大字符串中,这就不会发生。