gpt4 book ai didi

python - 错误: Can't use string pattern on a byte-like object

转载 作者:行者123 更新时间:2023-12-01 05:22:19 26 4
gpt4 key购买 nike

我使用 Python 3.2.3 运行此代码:

regex = '<title>(.+?)</title>'
pattern = re.compile(regex)

然后使用 findall 搜索模式:

titles = re.findall(pattern,html)
print(titles)

html 对象从特定的 url 获取 html 代码。

html = response.read()

我收到错误“无法在类似字节的对象上使用字符串模式”。我尝试过使用:

regex = b'<title>(.+?)</title>'

但这会在我的结果中附加一个“b”吗?谢谢。

最佳答案

urllib.request 响应为您提供字节,而不是 unicode 字符串。这就是为什么 re 模式也需要是 bytes 对象,并且您会再次获得 bytes 结果。

您可以使用服务器在 HTTP header 中提供的编码来解码响应:

html = response.read()
# no codec set? We default to UTF-8 instead, a reasonable assumption
codec = response.info().get_param('charset', 'utf8')
html = html.decode(codec)

现在您已经有了 Unicode,并且也可以使用 unicode 正则表达式了。

如果服务器对编码撒谎或者没有设置编码并且默认的 UTF-8 也不正确,上述情况仍然可能导致 UnicodeDecodeException 错误。

无论如何,用b'...'表示的返回值都是bytes对象;原始字符串数据尚未解码为 Unicode,如果您知道数据的正确编码,则无需担心。

关于python - 错误: Can't use string pattern on a byte-like object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082255/

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