我是编程初学者,目前正在尝试在引号之间调用函数。
在这里,更准确地说,我想将"名称"中的名称替换为 88。我怎么能用所有这些引号做到这一点?
提前感谢您的帮助
import requests
url = "https://api.multiloginapp.com/v1/profile/create"
def descr():
return 88
querystring = {"token":"xxxx"}
payload = "{nt"generateZeroFingerprintsData": true,n "name": "name",n "OS": "MacOS",n "platform": "MacIntel",n "browserType": "mimic",n "proxyHost": "0.0.0.0",n "proxyPort": 0,n "proxyIpValidation": false,n "proxyType": "socks5",n "maskFonts": true,n "disablePlugins": true,n "disableWebrtcPlugin": true,n "disableFlashPlugin": true,n "canvasDefType": "noise",n "hardwareConcurrency": 2,n "langHdr": "en-US,en;q=0.8",n "timeZone": "US/Eastern",n "audio": {n "noise": truen },n "geolocation": {n "permitType": "block"n },n "mediaDevices": {n "audioInputs": 1,n "audioOutputs": 1,n "videoInputs": 1n },n "webgl": {n "noise": truen },n "webRtc": {n "type": "block"n },n "shared": falsent},n}"
headers = {
'Content-Type': "application/json",
'Cache-Control': "no-cache",
'Postman-Token': "xxx
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)
执行您在此处直接询问如何执行的操作的方法是使用字符串格式。例如,使用 printf 样式的格式,1而不是这个:
payload = " … "name": "name" … "
。这样做:
template = " … "name": "%s" … "
payload = template % (descr(),)
当我们这样做时,如果您将有效负载放在单引号中,则无需转义每个"
。更好的是,如果你把它放在三引号中,你就不需要转义所有的换行符。有关详细信息,请参阅有关字符串的教程部分:
template = """{
t"generateZeroFingerprintsData": true,
t"name": "%s",
# …
}"""
但是,通过不做任何这些,您可以使事情变得容易得多。您正在尝试构建表示字典的 JSON 文本。最简单的方法是创建字典并对其进行 JSON 化:
payloadobj = {
"generateZeroFingerprintsData": True,
"name": descr(),
# …
}
payload = json.dumps(payloadobj)
或者,更好的是,让requests
为您做。不要用字符串传递data=
,而是用字典json=
传递它,它会自动对其进行 JSON 化,并为您设置Content-Type
标头:
payload = {
"generateZeroFingerprintsData": True,
"name": name,
# …
}
# …
response = requests.post(url, json=payload, headers=headers, params=querystring)
(另请注意,我没有调用泛型request
函数并传递POST
,你实际上只想对requests
不知道的自定义 HTTP 谓词执行,而是使用了更简单的post
函数,如快速入门文档中所示。
1.通常,较新的基于大括号的格式更简单。特别是在 3.6+ 中,您可以在引号内调用函数,只需将其括在 f 字符串内的大括号中,例如"spam = f'egg = {eggs((}"。但是,当您尝试创建的字符串充满了文字大括号,但没有充满文字百分比字符时,这通常是"一般"的例外。