python3 F 字符串的格式说明符无效

3th*_*1ll 9 python-3.x

我有一个小脚本,我试图在字符串中嵌入字符串变量以发送请求。我遇到的问题是,当我使用 f 字符串格式时,出现以下错误。

richard@kali:~/Dropbox/offsec/Code/5_Bassmaster$ ./bassmaster.py 192.168.1.101
Traceback (most recent call last):
  File "./bassmaster.py", line 15, in <module>
    json = f'{"requests": [{request_1}, {request_2}, {request_3}]}'
ValueError: Invalid format specifier
Run Code Online (Sandbox Code Playgroud)

这是我的代码。据我了解,它应该嵌入所述字符串,但我无法消除该错误。我已尝试使用此处^建议的角色,但它不能解决问题。

#!/usr/bin/python3

import requests,sys

if len(sys.argv) != 2:
    print(f"(+) usage: {sys.argv[0]} <target>") 
    sys.exit(-1)

target = f"http://{sys.argv[1]}:8080/batch"

request_1 = '{"method":"get","path":"/profile"}' 
request_2 = '{"method":"get","path":"/item"}' 
request_3 = '{"method":"get","path":"/item/$1.id"}'

json = f'{"requests": [{request_1}, {request_2}, {request_3}]}'
r = requests.post(target, json)

print(r.text)
Run Code Online (Sandbox Code Playgroud)

Grz*_*ski 8

尝试:

json = f'"requests": [{request_1}, {request_2}, {request_3}]'
json="{"+json+"}"
Run Code Online (Sandbox Code Playgroud)

而不是线json = f"..."

最外面的括号是这里的问题。F-string 不知道如何处理双括号 - 所以你需要让它以一种方式工作,只有单个波浪形括号打开和关闭,周围没有其他东西......