4

对于以下使用的行urllib

# some request object exists
response = urllib.request.urlopen(request)
html = response.read().decode("utf8")

返回什么格式的字符串read()?我一直试图从 Python 的文档中弄清楚这一点,但它根本没有提到它。为什么有一个decode?是否decode将对象解码utf-8 或utf-8?它从什么格式解码成什么格式?decode文档也没有提及这一点。是 Python 的文档那么糟糕,还是我不了解一些标准约定?

我想将该 HTML 存储在 UTF-8 文件中。我只是做一个常规的写,还是我需要“编码”回一些东西并写出来?

注意:我知道 urllib 已被弃用,但我现在无法切换到 urllib2

4

1 回答 1

1

问蟒蛇:

>>> r=urllib.urlopen("http://google.com")
>>> a=r.read()
>>> type(a)
0: <type 'str'>
>>> help(a.decode)
Help on built-in function decode:

decode(...)
    S.decode([encoding[,errors]]) -> object

    Decodes S using the codec registered for encoding. encoding defaults
    to the default encoding. errors may be given to set a different error
    handling scheme. Default is 'strict' meaning that encoding errors raise
    a UnicodeDecodeError. Other possible values are 'ignore' and 'replace'
    as well as any other name registered with codecs.register_error that is
    able to handle UnicodeDecodeErrors.

>>> b = a.decode('utf8')
>>> type(b)
1: <type 'unicode'>
>>> 

因此,似乎read()返回一个str. .decode()UTF-8解码为 Python 的内部 unicode 格式。

于 2013-03-16T20:36:16.350 回答