微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python在转义的JSON字符串中使用变量

如何解决python在转义的JSON字符串中使用变量

我正在使用 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")

当我使用硬编码字符串时,这没有任何问题。

解决方法

不要尝试将其写成带有内插变量的字符串。那就是疯狂。编写 Python dict,并使用 json.dumps() 将其转换为字符串。

TemplateData = json.dumps({"quarter_num": "Q2","year": "2021",})

然后很明显如何用变量替换一些数据。例如:

TemplateData = json.dumps({"quarter_num": "Q%s" % quarter,"year": year,})

这样,您的 IDE 会帮助您编写字典,而 Python 本身会检查您的语法,如果所有内容都在一个丑陋的大字符串中,则不会发生这种情况。

,

您不需要在多行字符串中转义引号:

In [5]: TemplateData=f"""{{"quarter_num":"{"Q2"}",...:                       "year":"{2021}"}}"""   
Out[5]: '{"quarter_num":"Q2",\n                  "year":"2021"}'                                                                  

在这个例子中我使用 f-string,你只需要双大括号来转义它们

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。