Python 在请求中处理文本和重置
决定使用Python请求来编写REST客户机。所有的工作都很好的职位,但所有的不是很好的得到 REST服务器预先设置Python 在请求中处理文本和重置,python,python-2.7,python-requests,Python,Python 2.7,Python Requests,决定使用Python请求来编写REST客户机。所有的工作都很好的职位,但所有的不是很好的得到 REST服务器预先设置抛出“allowIllegalResourceCall为false”以获取所有响应(作为反钓鱼机制)。使用标准python正则表达式库,使用以下语句,很容易将其删除:re.sub('\A.*[;]\n','',r.text)(可能不太完美,但可以完成任务)。(假设r是响应数据结构) 但是,当我使用以下命令将后处理文本重置回r.text时,就会出现问题:r.text=re.sub('
抛出“allowIllegalResourceCall为false”
以获取所有响应(作为反钓鱼机制)。使用标准python正则表达式库,使用以下语句,很容易将其删除:re.sub('\A.*[;]\n','',r.text)
(可能不太完美,但可以完成任务)。(假设r是响应数据结构)
但是,当我使用以下命令将后处理文本重置回r.text时,就会出现问题:r.text=re.sub('\A.*[;]\n','',r.text)
,这会引发以下异常:AttributeError:cannotset attribute
,这会使我认为文本是只读字段。(我想重置文本字段,以便使用响应对象的json功能)
现在我已经把背景问题摆出来了,我想我的问题是,有没有人知道解决方案,以及为什么文本是只读属性?(注意,我知道我可以在实际的请求源中为文本属性添加一个setter,但出于许多原因(不想破坏未来版本的构建、可移植性等))。如果您只想解码JSON,则无需再次设置文本属性:
import json
json.loads(re.sub('\A.*[;]\n', "", r.text))
如果您迫切需要修复响应正文,请改为设置response.\u content
;首先从.content
属性中读取:
r._content = re.sub('\A.*[;]\n', "", r.content)
.text
是一个属性;它提供响应的解码结果。并不是说你需要改变它;我知道我不需要这样做,但我觉得把剥离物抽象出来,然后像对待任何其他反应一样对待它,这比以完全不同于其他反应的方式处理它要优雅得多。