「コンテンツ」と「テキスト」の違いは何ですか


122

私は素晴らしいPythonリクエストライブラリを使用しています。すばらしいドキュメントには、理由を説明せずに何かを行う方法の多くの例があることに気づきました。例えば、両方との例として示している、サーバーの応答を取得します。しかし、これらのプロパティの機能はどこで説明されていますか?たとえば、いつどちらを選択すればよいですか?thar がunicodeオブジェクトを返すことが時々あります。テキスト以外の応答では違いがあると思います。しかし、これはすべてどこに文書化されていますか?リンクされたドキュメントには次のように記載されています。r.textr.contentr.text

非テキスト要求の場合、バイトとして応答本文にアクセスすることもできます。

しかし、続いてテキスト応答の例を示します!非テキスト要求はHTTPでは意味をなさないため、上記の引用はのnon-text responses代わりに言うことを意味していると思いnon-text requestsます。

つまり、Pythonリクエストサイトの(優れた)チュートリアルとは対照的に、ライブラリの適切なドキュメントはどこにありますか?


回答:


144

開発者インタフェースは、より多くの詳細があります。

r.textはUnicode r.contentでの応答の内容であり、バイト単位での応答の内容です。


46
そして、あなたはいつどちらか一方を選びますか?
multigoodverse '20

13
@multigoodverse:おそらくr.text、HTMLやXML文書などのテキスト形式の応答にr.content、画像やPDFファイルなどの「バイナリ」ファイルタイプに適しています。
dotancohen 2018

5
@dotancohen HTMLおよびXMLは、データ内の宣言を使用して独自のデコードを行うのでr.content、隠されたものではなく、生でフィードする必要がありますr.text
tdelaney

より一般的には、単一の応答にネストされたコンテンツまたはマルチパートのコンテンツ(添付ファイル付きの電子メールメッセージなど)が含まれ、各パートが異なる方法でエンコードされる場合があります。バイトストリームにアクセスせずにそのような応答を処理することは不可能ですが、正しくデコードされたUnicodeテキストが必要なだけの一般的なケースからは遠く離れています。
holdenweb 2018年

なぜPythonインタープリターが両方r.textr.contentテキストとして表示されるのか。r.contentテキストやr.textビットとして表示しないのはなぜですか(それが本質的にそれである場合)。
Arnb

11

ドキュメントから明らかなように、r.content

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

 >>> r.content

ページの下をさらに読むと、たとえば画像ファイルがアドレス指定されます。


2
ありがとうございました。私は今、小さな参照bオブジェクトはバイトのオブジェクトであることを意味し、「非テキスト要求するための」テキストを第一の例を先行します。バイトがテキストとして表示されている理由は明らかではありませんが、おそらくそれが別のPythonの「気の利いた」ものですが、このコンテキストでは混乱しています。ありがとう。
dotancohen 2013年

1
これはpython 2.xよりもpython 3.xの方が重要なようです。requestspage.contentのpython 3で使用すると、次のエラーが発生します if 'rss' in page.content:TypeError: a bytes-like object is required, not 'str'
。-
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.