处理文本并重置请求

时间:2013-04-03 17:10:03

标签: python python-2.7 python-requests

决定使用Python请求编写REST客户端。一切都适用于POST,但是在GET上一切都不太好。

REST服务器将throw 'allowIllegalResourceCall is false.';添加到所有GET响应(作为反网络钓鱼机制)。这很容易使用标准的python正则表达式库删除,使用以下语句:re.sub('\A.*[;]\n', "", r.text)(可能不完美,但完成工作)。 (假设r是响应数据结构)

但是,当我使用以下命令将后处理文本重置回r.text时出现问题:r.text = re.sub('\A.*[;]\n', "", r.text)会抛出以下异常:AttributeError: can't set attribute,这会让我相信文本是一个只读字段。 (我想重置文本字段,所以我可以使用Response对象的json功能)

所以现在我已经解决了背景问题,我想我的问题是,是否有人知道解决方案以及为什么text是只读属性? (注意,我知道我可以进入并在实际请求源中为text属性添加一个setter,但是由于很多原因(不想在未来的版本,可移植性等方面打破构建) ))。

1 个答案:

答案 0 :(得分:2)

如果您只想解码JSON,则 需要再次设置text属性:

import json

json.loads(re.sub('\A.*[;]\n', "", r.text))

如果您需要修复响应正文,请设置response._content;首先从.content属性中读取它:

r._content = re.sub('\A.*[;]\n', "", r.content)