gpt4 book ai didi

Python 2 与 Python 3 - urllib 格式

转载 作者:IT老高 更新时间:2023-10-28 20:41:19 25 4
gpt4 key购买 nike

我已经厌倦了试图弄清楚为什么这段代码在 Python 2 中而不是在 Python 3 中有效。我只是想抓取一个 json 页面然后解析它。这是 Python 2 中的代码:

import urllib, json
response = urllib.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)

认为 Python 3 中的等效代码是这样的:

import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content)

但它在我面前爆炸了,因为 read() 返回的数据是“字节”类型。但是,我一辈子都无法将它转换为 json 能够解析的东西。我从标题中知道 reddit 正试图将 utf-8 发送回给我,但我似乎无法将字节解码为 utf-8:

import urllib.request, json
response = urllib.request.urlopen("http://reddit.com/.json")
content = response.read()
data = json.loads(content.decode("utf8"))

我做错了什么?

编辑:问题是我无法让数据进入可用状态;即使json加载了数据,也有一部分是无法显示的,我希望能够将数据打印到屏幕上。

第二次编辑:问题似乎更多地与打印而不是解析有关。 Alex 的回答通过将 IO 设置为 utf8 为脚本在 Python 3 中工作提供了一种方法。但是仍然存在一个问题:为什么代码在 Python 2 中有效,而在 Python 3 中无效?

最佳答案

您发布的代码可能是由于错误的剪切和粘贴操作,因为它在两个版本中都明显错误(f.read() 失败,因为没有 f裸名定义)。

在 Py3 中,ur = response.decode('utf8') 非常适合我,下面的 json.loads(ur) 也是如此。也许错误的复制和粘贴影响了您的 2 到 3 转换尝试。

关于Python 2 与 Python 3 - urllib 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com