微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于用户输入的请求 Python

如何解决基于用户输入的请求 Python

我正在发出一个 post 请求并且我有一个有效载荷变量,但是我试图将有效载荷变量中的一些数据设置为用户输入,所以我正在做: payload = "{\r\"user\": \"{}\",\r\"password\": \"{}\",\r\"gdn\": 0\r}".format(name,pass)

我收到此错误

File "testing.py",line 24,in sndReq
  payload = "{\r\"user\": \"{}\",pass)
KeyError: '\r"user"

如果我取出 .format 并将硬值放在那里,它就可以工作。 (我也尝试过使用 'f' 字符串)

如果重要的话,我的请求是这样的: r = requests.request("POST",url,data=payload,headers=headers)

解决方法

您的字符串似乎没有正确格式化/转义。做一些更具可读性的事情怎么样,例如:

import requests

# some example values because your question doesn't give too many details
user,password ="user","password"
url="http://google.com" # example url
headers={'pragma': 'no-cache'} # whatever your headers are

# now do the request,note we're not passing a single string here
requests.post(
    url,json={
      "user": user,"password": password
    },headers=headers
)

此外,我鼓励您使用比那些不可读的字符串更容易的东西!把它放到 Python(和我们)可以更轻松地使用的东西中。我要做的第一件事是将您的字符串放入一个 python 对象中:

import json
payload = "{\r\"user\": \"{}\",\r\"password\": \"{}\",\r\"gdn\": 0\r}"
data=json.loads(payload)
data.update({'password': 'secret','user': 'me'})
# {u'password': 'secret',u'user': 'me',u'gdn': 0}

最后,如果您真的想使用 {} 作为格式字符串(我希望我的其余答案表明您比您需要的要困难得多),您需要删除格式化文本中的前导和尾随大括号:

"{" + "\r\"user\": \"{}\",\r\"gdn\": 0\r".format("user","secret") + "}"
# '{\r"user": "user",\r"password": "secret",\r"gdn": 0\r}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。