【发布时间】:2020-09-17 16:12:16
【问题描述】:
我正在尝试从包含波兰字母表字符的 API 打开一个 json 文件。我试图将 url 编码为 utf-8,但仍然会出现各种问题。我包括我编写的代码和出现的错误。
import urllib.request as request
import json
url='https://api.um.warszawa.pl/api/action/dbtimetable_get?id=myapiID&busstopId=wartość&busstopNr=wartość&line=wartość&apikey=wartość'
url=url.encode('utf-8')
with request.urlopen(url) as response:
source = response.read()
data = json.loads(source)
然后出现错误:'bytes' object has no attribute 'timeout'。
【问题讨论】:
-
发布完整的回溯。你在 python 2 还是 3 上?
-
您是否也可以尝试发布打印它说没有属性“超时”的对象的结果?
-
这很有趣......这里似乎有人已经解决了stackoverflow.com/questions/1916684/…。但我试过你的版本,我也有
timeout错误:AttributeError: 'bytes' object has no attribute 'timeout'。我尝试使用自定义类对其进行调整:class StringWithTimeout(str): def __new__(cls, string, timeout): obj = str.__new__(cls, string) setattr(obj, 'timeout', timeout) return obj。但后来我得到URLError: <urlopen error unknown url type: b'https> -
你用的是哪个python版本?
-
又一个潜在的解决方案stackoverflow.com/questions/36395705/…
标签: python character-encoding urlencode non-ascii-characters