Python 如何在字典的字符串周围使用f字符串格式

Python 如何在字典的字符串周围使用f字符串格式,python,python-3.x,f-string,Python,Python 3.x,F String,当字符串转换为f字符串时,以下代码导致格式说明符无效。由于我的报价看起来不错,我无法准确指出问题所在 expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}' 原因: > expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}' E ValueError: Invalid format

当字符串转换为f字符串时,以下代码导致格式说明符无效。由于我的报价看起来不错,我无法准确指出问题所在

expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}'
原因:

>       expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}'
E       ValueError: Invalid format specifier
卸下
f
时:

expected_document = '{"name":"tenders","value":"chicken","key":"{key}"}'

很好。

我想你可以像这样把f放在字典里:

key = 'test'

expected_document = {"name":"tenders","value":"chicken","key":f"{key}"}
为什么要使用f-string呢

下面的代码可以工作

key = 'test'

expected_document = { "name": "tenders", "value": "chicken", "key": key }

print(expected_document)
输出:


更新#1:如果您想将其作为字符串,但不想进行类型转换,那么

key = 'test'

expected_document_1 = '{"name":"tenders","value":"chicken","key":"' + key + '"}'  # old fashioned way

print(expected_document_1)

expected_document_2 = f'{{"name":"tenders","value":"chicken","key":"{key}"}}'  # using f-string

print(expected_document_2)
输出:



更新#2:已经建议第二个选项,即在其中一条注释中转义大括号。

您可以编译字典而不使用插值,然后将其转换为字符串

temporary_变量={“name”:“tenders”,“value”:“chicken”,“key”:key}
预期的\u文档=str(临时\u变量)
或者你甚至可以把它放在一行

expected_document=str({“name”:“tenders”,“value”:“chicken”,“key”:key})

我正在使用Python3.6.3——我不知道其他版本会如何处理这个问题。这样做的一个潜在缺点是,您不应该依赖字典来维护它们的顺序,这可能会导致其中断。

为什么要使用f字符串?“works fine”示例是否给出了您想要的结果?或者那是你唯一想插入的
键吗?同样,在使用字符串格式时,将括号加倍以转义它们。例如:
{
应该是
{
如果你想转义它。我需要期望的_文档是一个字符串,其中{key}是一个被双引号包围的变量。我确实需要期望的_文档是一个字符串,谢谢你的回复!只需将str(期望的_文档)放在后面,你不需要在你的示例中使用f-string。
期望的_文档={“name”:“tenders”,“value:“chicken”,“key”:key}
会很好用。因为我需要预期的文档是一个字符串,所以我断言它等于另一个可以更改key的字符串。也许我可以将该字符串的类型更改为字典或其他东西?谢谢您的回复!
key = 'test'

expected_document_1 = '{"name":"tenders","value":"chicken","key":"' + key + '"}'  # old fashioned way

print(expected_document_1)

expected_document_2 = f'{{"name":"tenders","value":"chicken","key":"{key}"}}'  # using f-string

print(expected_document_2)
{"name":"tenders","value":"chicken","key":"test"}
{"name":"tenders","value":"chicken","key":"test"}