You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何替换“from urllib2 import Request, urlopen”语句?

在Python3中替换urllib2的Request和urlopen

嘿,这个问题我之前切换Python版本时也踩过坑!Python3已经把urllib2模块的功能拆分迁移到urllib.request模块里了,只需要调整导入语句就能解决,给你整理好修改后的代码和说明:

修改后的完整代码片段

from urllib.request import Request, urlopen  # 这行是核心修改
import json
from pandas.io.json import json_normalize

# ... 你的其他业务代码 ...

# 注意:把URL里的&换成&更规范,不需要HTML实体转义
request = Request('http://maps.googleapis.com/maps/api/elevation/json?locations=' + path1 + '&sensor=false')
response = urlopen(request)
elevations = response.read().decode('utf-8')  # 建议加上解码,把字节流转成字符串
data = json.loads(elevations)

# ... 后续的数据处理代码 ...

关键细节说明

  • 模块迁移:Python3彻底移除了urllib2,所有请求相关的类(比如Request)和方法(比如urlopen)都放到了urllib.request模块下,所以必须修改导入语句。
  • 字节流解码:urlopen返回的响应调用read()得到的是字节类型数据,加上.decode('utf-8')转成字符串,能避免某些情况下json.loads报错。
  • URL优化:你原URL里的&是HTML实体转义,直接换成&在Python字符串里更合适,不会影响请求的发送。

另外补充个小提示:如果你的pandas版本比较新,pandas.io.json.json_normalize已经被移到顶层模块了,改成from pandas import json_normalize会更稳妥,不过这和你当前的urllib问题无关,可以后续遇到报错再调整。

内容的提问来源于stack exchange,提问作者tohardtme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:12:32