【问题标题】:Python Requests returning textPython 请求返回文本
【发布时间】:2017-07-01 08:31:49
【问题描述】:

查询以文本形式返回响应,我想以 json 格式获取它。

Python 3.5.3

import ssl
import json
import requests

url = 'https://127.0.0.1:8000/'

payload = json.dumps({'User':'Adam', 'Password':'123456'})

r = requests.post(url, data=payload)

回复:

In [23]: r.text

Out[23]: 'status=ok&info=00005'

In [24]: r.json()

Out[24]: JSONDecodeError: Expecting value: line 1 column 1 (char 0)

如何以 json 格式获取此数据,如下所示:

{
'status: 'ok',
'info': '00005'
}

【问题讨论】:

  • 如果服务器应用程序在 localhost 上运行,假设您可以控制它,那么为什么不只返回 JSON?
  • 服务器地址是我不控制它们的一个例子。服务器返回标头链接 'Content-Type': 'text/html;charset=UTF-8'

标签: python json python-3.x python-requests


【解决方案1】:

给定的文本不是json字符串,而是查询字符串。

您可以使用urllib.parse.parse_qs 获取字典或使用urllib.parse.parse_qsl 从查询字符串中获取(键、值)对的列表。

>>> urllib.parse.parse_qs('status=ok&info=00005')
{'status': ['ok'], 'info': ['00005']}


>>> urllib.parse.parse_qsl('status=ok&info=00005')
[('status', 'ok'), ('info', '00005')]
>>> dict(urllib.parse.parse_qsl('status=ok&info=00005'))
{'status': 'ok', 'info': '00005'}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多