当我在Python (Pandas)中输出一些中文字符时,它显示如下
\xe8\xbf\x99\xe7\xa7\x8d\xe6\x83\x85\xe5\x86\xb5\xe6\x98\xaf\xe6\xb2\xb9\xe6\xb3\xb5\xe6\x95\x85\xe9\x9a\x9c\xe7\x81\xaf\xef\xbc\x8c\xe6\xa3\x80\xe6\x9f\xa5\xe4\xb8\x80\xe4\xb8\x8b\xe6\xb2\xb9\xe6\xb3\xb5\xe6\x8f\x92\xe5\xa4\xb4\xe6\x98\xaf\xe5\x90\xa6\xe6\x8e\xa5\xe8\x99\x9a\xef\xbc\x8c\xe7\x84\xb6\xe5\x90\x8e\xe6\x9f\xa5\xe4\xb8\x80\xe4\xb8\x8b\xe6\xb2\xb9\xe6\xb3\xb5\xe5\x86\x85\xe7\xae\xa1\xe9\x81\x93\xe5\x8e\x8b\xe5\x8a\x9b\xe6\x98\xaf\xe5\x90\xa6\xe7\xac\xa6\xe5\x90\x88\xe6\xad\xa3\xe5\xb8\xb8\xe5\x80\xbc\xe3\x80\x82
编码格式是什么?据我所知,它不是unicode。谢谢!
发布于 2018-07-14 23:05:09
您正在接收的输出称为字节对象。为了解码它,你需要做output.decode('utf-8')
。
例如:
output = b'\xe8\xbf\x99\xe7...'
unicode_output = output.decode('utf-8')
print(unicode_output)
然后输出非拉丁字符(我不能包含它,因为它被算作垃圾邮件)。
另一种在一行代码中完成此操作的方法是:print(b'\xe8\xbf\x99\xe7...'.decode('utf-8'))
。
但是,如果这不起作用,那么可能是因为您的输出不是字节对象,而是包含在一个字符串中。如果这不起作用,那么还有另一种解决方案。
output = '\xe8\xbf\x99\xe7...'
exec('print(b\''+ output + '\'.decode(\'utf-8\'))')
这应该能够修复它。希望你能从中得到一些有用的东西。祝你今天愉快!
发布于 2018-07-14 07:51:43
这是bytes
类型,包含一个有效的utf-8中文文本(据我所能信任的谷歌翻译)。
如果它是代码中的字符串文字,则将# -*- coding: utf-8 -*-
添加为Python文件的第一行。
如果是外部数据,则为here's how to convert it to a text (str
类型):bytes_text.decode("utf-8")
发布于 2018-07-14 08:07:49
raw_bytes = b'\xe8\xbf\x99\xe7\xa7\x8d\xe6\x83\x85 . . .'
使用包含十六进制字符的<class 'bytes'>
对象raw_bytes
,然后可以在raw_bytes
上调用decode
并获得字符的<class 'str'>
表示。
string_text = raw_bytes.decode("utf-8")
https://stackoverflow.com/questions/51333489
复制相似问题