我刚刚自己做了第一个网络爬虫,它上了维基百科,下载了整个页面的html。我设法获得了一个列表的内容。列表中的值包含正数或负数。但它给了我一个'\xe2\x88\x922',而不是打印出一个'-2'。我尝试了string.replace("\xe2\x88\x92","-"),但由于反斜杠的原因,这似乎不起作用。你知道我怎样才能把这些utf东西转换成它们真正的符号吗?如果这很重要,我使用urllib来获取html内容。
发布于 2020-07-04 18:06:18
您可以使用bytes.decode对其进行转换:
>>> b'\xe2\x88\x922'.decode("utf8")
'-2'如果您的数据不是以b开头(即,如果它不是bytes对象),您可以先将其转换为bytes,然后再解码:
>>> s = '\xe2\x88\x922'
>>> byte_object = bytes(ord(c) for c in s)
>>> byte_object.decode("utf8")
'-2'发布于 2020-07-04 18:12:20
不幸的是,从web页面读取数据时,这种情况很常见:它们包含的字符看起来像标准的ASCII字符,但事实并非如此。
这里有一个减号字符(unicode U+2212) −,它看起来像普通的连字符减号(unicode U+002D或ASCII0x2D) -。
在UTF8中,它被编码为b'\xe2\x88\x922'。这可能意味着当它是UTF8编码的时候,读起来就好像它是Latin1编码的一样。
正确重新编码的一个技巧是将其编码为Latin1,然后解码回来:
t = '\xe2\x88\x922'
print(t.encode('latin1').decode()
−2https://stackoverflow.com/questions/62727634
复制相似问题