gpt4 book ai didi

python - 将内容为utf-8字符串的unicode转成str

转载 作者:太空狗 更新时间:2023-10-29 18:16:09 25 4
gpt4 key购买 nike

我正在使用 pyquery 来解析页面:

dom = PyQuery('http://zh.wikipedia.org/w/index.php', {'title': 'CSS', 'printable': 'yes', 'variant': 'zh-cn'})
content = dom('#mw-content-text > p').eq(0).text()

但是我在 content 中得到的是一个带有 utf-8 编码内容的 unicode 字符串:

u'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8...'

如何在不丢失内容的情况下将其转换为 str

说清楚:

我想要 conent == '\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'

不是 conent == u'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'

最佳答案

如果您有一个带有 UTF-8 字节的 unicode 值,请编码为 Latin-1 以保留“字节”:

content = content.encode('latin1')

因为 Unicode 代码点 U+0000 到 U+00FF 都与 latin-1 编码一对一映射;因此,这种编码将您的数据解释为文字字节。

对于你的例子,这给了我:

>>> content = u'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'
>>> content.encode('latin1')
'\xe5\xb1\x82\xe5\x8f\xa0\xe6\xa0\xb7\xe5\xbc\x8f\xe8\xa1\xa8'
>>> content.encode('latin1').decode('utf8')
u'\u5c42\u53e0\u6837\u5f0f\u8868'
>>> print content.encode('latin1').decode('utf8')
层叠样式表

PyQuery 使用 requestsurllib 来检索 HTML,对于 requests,使用响应的 .text 属性。这会单独根据 Content-Type header 中设置的编码自动解码响应数据,或者如果该信息不可用,则为此使用 latin-1(对于文本响应,但 HTML 是文本响应)。您可以通过传入 encoding 参数来覆盖它:

dom = PyQuery('http://zh.wikipedia.org/w/index.php', encoding='utf8',
{'title': 'CSS', 'printable': 'yes', 'variant': 'zh-cn'})

此时您根本不需要重新编码。

关于python - 将内容为utf-8字符串的unicode转成str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14539807/

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