“内容”和“文本”有啥区别

Posted

技术标签:

【中文标题】“内容”和“文本”有啥区别【英文标题】:What is the difference between 'content' and 'text'“内容”和“文本”有什么区别 【发布时间】:2013-06-05 08:52:09 【问题描述】:

我正在使用很棒的 Python Requests 库。我注意到fine documentation 有很多如何 做某事的例子,而没有解释为什么。例如,r.textr.content 都显示为如何 获取服务器响应的示例。 但它在哪里解释了这些属性的作用?例如,我什么时候会选择一个而不是另一个?我看到 thar r.text 返回一个 unicode 对象有时,我想非文本响应会有所不同。但是所有这些记录在哪里?请注意,链接的文档确实声明:

对于非文本请求,您还可以按字节访问响应正文:

然后它继续显示文本响应的示例!我只能假设上面引用的意思是说non-text responses而不是non-text requests,因为非文本请求在HTTP中没有意义。

简而言之,与 Python Requests 网站上的(优秀的)教程相比,该库的正确文档在哪里?

【问题讨论】:

相关:Should I use .text or .content when parsing a Requests response? “简而言之,与 Python 请求站点上的(优秀)教程相反,库的正确文档在哪里?”可能是侧边栏上的“API 参考”链接? @KarlKnechtel:谢谢。八年前提出这个问题时,Python Requests 网站的组织方式很可能有所不同! 【参考方案1】:

requests.Response 类 documentation 有更多详细信息:

r.text 是响应的 Unicode 内容,r.content 是响应的内容,以字节为单位。

【讨论】:

你什么时候选择其中一个? @multigoodverse:可能r.text 更适合文本响应,例如 html 或 XML 文档,r.content 更适合“二进制”文件类型,例如图像或 PDF 文件. @dotancohen HTML 和 XML 使用数据中的声明来进行自己的解码,因此它们应该被提供原始的 r.content,而不是隐藏的 r.text 更一般地说,单个响应可能包含嵌套或多部分内容(如带有附件的电子邮件),并且每个部分可能以不同的方式编码。如果不访问字节流,就不可能处理这样的响应,但这与您只需要正确解码的 Unicode 文本的常见情况相去甚远。 为什么python解释器将r.textr.content都显示为文本。为什么不将r.content 显示为文本,将r.text 显示为位(如果它本来就是这样的话)?【参考方案2】:

从文档中可以清楚地看出 r.content

You can also access the response body as bytes, for non-text requests:

 >>> r.content

如果您进一步阅读页面,它会处理例如图像文件

【讨论】:

谢谢。我现在看到第一个示例前面的小 b 带有文本“用于非文本请求”,这意味着该对象是字节对象。目前尚不清楚为什么字节被显示为文本,也许这是另一个 Python 的“好”,但在这种情况下它是令人困惑的。谢谢。 这似乎对 python 3.x 比 python 2.x 更重要;在 page.content 上的 python 3 中使用 requests 会出现此错误:if 'rss' in page.content: --> TypeError: a bytes-like object is required, not 'str'

以上是关于“内容”和“文本”有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

JS中textContent和value有啥区别?同样是取值内容,为啥不能通用?

请问EPLAN P8中“路径功能文本”和“文本”有啥区别?

字串text与文本textarea有啥区别

QT中LineEdit TextEdit PlainTextEdit 这三个控件有啥区别,分别用在啥情况下呢。

fiddler抓到的包显示的内容textview和syntaxview有啥区别

在 schema 中, simpleType 与 complexType有啥区别?