Python中出现ValueError: Invalid format specifier错误该如何解决?
解决Python ValueError: Invalid format specifier错误
错误原因:
- 代码里的
"是HTML转义的双引号,直接放到Python f-string里会导致语法混乱 - f-string中要输出字面大括号必须用
{{和}}转义,原代码里部分大括号未正确转义,同时{i}前后的引号拼接方式错误,让Python误将部分内容识别为格式说明符,触发报错
修正后的代码:
for i in range(0, 2): payload = f'{{"requests": [{{"indexName": "products", "params": "query=&hitsPerPage=20&maxValuesPerFacet=1000&page={i}&facets=%5B%22family.name%22%2C%22wine_type.name%22%2C%22vina.name%22%2C%22cepa.name%22%2C%22linea.name%22%2C%22procedencia.name%22%2C%22wine_harvest_year%22%2C%22price%22%2C%22score%22%5D&tagFilters=&facetFilters=%5B%22family.name%3AVinos%22%5D"}}]}}' print(payload)
关键修改点:
- 把所有
"替换为实际的双引号" - 确保所有需要作为字面量输出的大括号都用
{{和}}转义(比如最外层的{{"requests": ...}}、数组内的{{"indexName": ...}}) - 直接在
page=后插入{i},无需额外引号包裹(params参数本身是字符串,{i}直接拼接即可)
更推荐的写法(用字典生成JSON,避免手动拼接的繁琐):
import json for i in range(0, 2): payload_dict = { "requests": [ { "indexName": "products", "params": f"query=&hitsPerPage=20&maxValuesPerFacet=1000&page={i}&facets=%5B%22family.name%22%2C%22wine_type.name%22%2C%22vina.name%22%2C%22cepa.name%22%2C%22linea.name%22%2C%22procedencia.name%22%2C%22wine_harvest_year%22%2C%22price%22%2C%22score%22%5D&tagFilters=&facetFilters=%5B%22family.name%3AVinos%22%5D" } ] } payload = json.dumps(payload_dict) print(payload)
这种方式无需手动转义大括号,可读性更强且不易出错。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

