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

ten*_*s27 6 python python-3.x f-string

当字符串转换为 f 字符串时,以下代码会导致无效的格式说明符。我无法确定问题出在哪里,因为我的报价看起来没问题。

expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}'
Run Code Online (Sandbox Code Playgroud)

原因:

>       expected_document = f'{"name":"tenders","value":"chicken","key":"{key}"}'
E       ValueError: Invalid format specifier
Run Code Online (Sandbox Code Playgroud)

同时删除f

expected_document = '{"name":"tenders","value":"chicken","key":"{key}"}'
Run Code Online (Sandbox Code Playgroud)

工作正常。

Bil*_*uly 7

为什么要使用f 字符串

以下代码有效。

key = 'test'

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

print(expected_document)
Run Code Online (Sandbox Code Playgroud)

输出:

{'name': 'tenders', 'value': 'chicken', 'key': 'test'}
Run Code Online (Sandbox Code Playgroud)

更新#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)
Run Code Online (Sandbox Code Playgroud)

输出:

{"name":"tenders","value":"chicken","key":"test"}
{"name":"tenders","value":"chicken","key":"test"}
Run Code Online (Sandbox Code Playgroud)

更新#2: @Error - Syntropical Remorse已经建议了在评论之一中转义大括号的第二种选择。


bbd*_*108 0

我认为你可以将 f 像这样放在字典中:

key = 'test'

expected_document = {"name":"tenders","value":"chicken","key":f"{key}"}
Run Code Online (Sandbox Code Playgroud)