基本的に、私はWebサイトにリクエストを送信し、バイト応答を返しました:b'[{"geonameId:"703448"}..........'.
バイトタイプですが、それは人間が読むことができ、jsonのリストのように見えるため、混乱しています。 r.encoding
を返したISO-859-1
を実行して、latin1で応答がエンコードされていることを知っています。それをデコードしようとしましたが、空の文字列が返されます。ここに私がこれまで持っているものがあります:
r = response.content
string = r.decode("ISO-8859-1")
print (string)
これは、空白行を印刷する場所です。しかし走ると
len(string)
取得:back 31023
空の文字列を返さずにこれらのバイトをデコードするにはどうすればよいですか?
json
モジュールで解析しようとしましたか?
import json
parsed = json.loads(response.content)
別の解決策は、Unicodeでコンテンツを返すresponse.textを使用することです
Type: property
String form: <property object at 0x7f76f8c79db8>
Docstring:
Content of the response, in unicode.
If Response.encoding is None, encoding will be guessed using
``chardet``.
The encoding of the response content is determined based solely on HTTP
headers, following RFC 2616 to the letter. If you can take advantage of
non-HTTP knowledge to make a better guess at the encoding, you should
set ``r.encoding`` appropriately before accessing this property.
有る r.text
およびr.content
。最初の文字列は文字列、2番目の文字列はバイトです。
あなたが欲しい
import json
data = json.loads(r.text)