格式化双花括号中的字符串
Formatting string which is in double curly braces
我有以下需要执行的短代码
isin = 'US0028241000'
payload = f'[{"idType":"ID_ISIN", "idValue": "{isin}"}]'
它输出一个ValueError: Invalid format specifier
我也试过了:
payload = '[{"idType":"ID_ISIN", "idValue": "{}"}]'.format(isin)
这个也不行。
我的想法是,这是因为花括号位于字典中。我该如何执行这首曲子?
您的标题暗示了解决方案。在 f-string 中,您需要使用 {{
和 }}
作为文字花括号,但您从不引入它们。
>>> f'[<b>{{</b>"idType":"ID_ISIN", "idValue": "{isin}"<b>}}</b>]'
'[{"idType":"ID_ISIN", "idValue": "US0028241000"}]'
就是说,不要使用字符串格式化工具构造 JSON 值;使用 json
模块。
>>> import json
>>> json.dumps([{'idType': 'ID_ISIN', 'idValue': isin}])
'[{"idType": "ID_ISIN", "idValue": "US0028241000"}]'
问题是大括号。
要避开它们,请尝试:
payload = f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'
isin = 'US0028241000'
payload = f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'
print(payload)
为了在格式化字符串时忽略任何大括号,只需用 {}
将其包裹起来
f
字符串考虑花括号 {}
内的任何内容是 python 表达式。
这里的问题也是一样的,你试图把花括号当作字典,但 f
string 认为它是一个表达式。当它试图解释我们得到 ValueError: Invalid format specifier
.
示例 1:
尝试将 list
变量放入 f
字符串
l = [1,2,3]
`f'{l}'`
示例 2:
尝试将 dict
放入 f
字符串
你应该使用双花括号。
`f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'`
但是如果你在某个变量中声明了 dict
那么你可能会使用如下:
out = {"idType":"ID_ISIN", "idValue": f"{isin}"}
f'{out}'
我有以下需要执行的短代码
isin = 'US0028241000'
payload = f'[{"idType":"ID_ISIN", "idValue": "{isin}"}]'
它输出一个ValueError: Invalid format specifier
我也试过了:
payload = '[{"idType":"ID_ISIN", "idValue": "{}"}]'.format(isin)
这个也不行。 我的想法是,这是因为花括号位于字典中。我该如何执行这首曲子?
您的标题暗示了解决方案。在 f-string 中,您需要使用 {{
和 }}
作为文字花括号,但您从不引入它们。
>>> f'[<b>{{</b>"idType":"ID_ISIN", "idValue": "{isin}"<b>}}</b>]'
'[{"idType":"ID_ISIN", "idValue": "US0028241000"}]'
就是说,不要使用字符串格式化工具构造 JSON 值;使用 json
模块。
>>> import json
>>> json.dumps([{'idType': 'ID_ISIN', 'idValue': isin}])
'[{"idType": "ID_ISIN", "idValue": "US0028241000"}]'
问题是大括号。
要避开它们,请尝试:
payload = f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'
isin = 'US0028241000'
payload = f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'
print(payload)
为了在格式化字符串时忽略任何大括号,只需用 {}
f
字符串考虑花括号 {}
内的任何内容是 python 表达式。
这里的问题也是一样的,你试图把花括号当作字典,但 f
string 认为它是一个表达式。当它试图解释我们得到 ValueError: Invalid format specifier
.
示例 1:
尝试将 list
变量放入 f
字符串
l = [1,2,3]
`f'{l}'`
示例 2:
尝试将 dict
放入 f
字符串
你应该使用双花括号。
`f'[{{"idType":"ID_ISIN", "idValue": "{isin}"}}]'`
但是如果你在某个变量中声明了 dict
那么你可能会使用如下:
out = {"idType":"ID_ISIN", "idValue": f"{isin}"}
f'{out}'