如何解决http请求响应不是json格式
我花了很多时间试图解决这个问题,但仍然没有运气。如果您能提供帮助,不胜感激。
这是用 Python 编写的
当我运行这个时:
import requests
import json
response = requests.post(url)
response.text
我明白了:
'\n\n\n\n{\nVisitCount : "9,992",\ntotalCount : "18,018",\nnotiList : [\n\n],\n通过:false\n}'
如果我运行这个:
print(response.text)
我明白了:
{ VisitCount : "9,totalCount : "18,018,455",notiList : [
],通过:false }
最终我的目标是提取数字 9,992。 我认为最简单的方法是将其转换为 json,但它似乎不起作用。
当我跑步时:
response.json() or json.loads(response.text)
我明白了:
JSONDecodeError:需要用双引号括起来的属性名称: 第 6 行第 1 列(字符 6)
这可能是因为它在响应中缺少双引号。
- 我该如何解决这个问题,可能在响应中添加双引号?
- 是否有更简单的方法来提取数字,在本例中为 9,992?
解决方法
您可以使用正则表达式:
import re
number_string = re.findall("VisitCount\W+:\W+.*?([0-9,]+).*",response.text.strip())[0]
给出 number_string
作为
9,992
如果你想把它转换成int
:
number = int(number_string.replace(",",""))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。