Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式


Posted in Python onMay 11, 2020

查看字符编码:

import chardet
response = chardet.detect(b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8')
print(response)

{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

乱码字符转换:

response = b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8'
print(response.decode('utf8'))
# def decode_char(*args):
#   response = args[0]
#   print(response.decode('utf8'))
#
# c = b'\a8\xe5\x90\xa7\xef\xbc\x81'
#
# decode_char(c)

补充知识:python3 中怎么把类似这样的'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'转换成汉字输出

在编程的过程中遇到了类似的困扰,网上查了很多解决思路,终于算是明白了一些,这里和大家分享 一下。

python3相对于python2最重要的新特性之一就是对字符串(文本)和二进制数据流做了明确的区分,文本总是Unicode,由字符类型表示,而二进制数据则由bytes类型表示,python3不会以任意隐式方式混用字节型和字符型,也不能拼接字符串和字节流(python2中可以,会自动进行转换),也不能在字节流中搜索字符串,也不能将字符串传入参数为字节流的函数。

str和bytes类型之间的相互转换

字符串类str有一个encode()方法,它是字符串向比特流的编码过程。

bytes类则有一个decode()方法,它是比特流向字符串的解码过程

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

encode过程

s = '绝地求生'
ss = s.encode()
print(type(ss))
print(ss)

运行结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

decode过程

s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'
ss = s.decode()
print(type(ss))
print(ss)

运行结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

了解过基本的转化过程,下面回到主题,如何将'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'转换成汉字输出呢?

要解决的问题是将bytes类型的内容以汉字的形式输出,但是该部分内容是字符串类型。因此首先需要将该str转换成bytes类型,再decode解码为str输出。这里需要用到的方法是encode(‘raw_unicode_escape')。当然,也可以使用decode(‘raw_unicode_escape')方法输出内容为bytes形式的字符串

s = '\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'
ss = s.encode('raw_unicode_escape')
print(type(ss))
print(ss)

sss = ss.decode()
print(sss)

结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

方法补充:如果我们直接定义bytes类型的变量,也可以直接使用str(s, ‘utf8')的方式输出汉字

s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'

print(type(s))
print(s)

ss = str(s, 'utf8')
print(ss)

结果:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

第二种方法可以输出从网络上直接抓取的网页中包含的中文字符。

我们使用如下代码,抓取网页www.baidu.com。

import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)

显示的结果中,中文部分会以\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80代替,这里可以使用方法二进行转换。

import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html =str(response.read(),'utf-8')
print(html)

结果如下:

Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式

以上这篇Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python抓取京东价格分析京东商品价格走势
Jan 09 Python
python调用新浪微博API项目实践
Jul 28 Python
浅谈Python的垃圾回收机制
Dec 17 Python
pycham查看程序执行的时间方法
Nov 29 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Django中提供的6种缓存方式详解
Aug 05 Python
Python Subprocess模块原理及实例
Aug 26 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
浅谈pandas dataframe对除数是零的处理
Jul 20 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
利用python汇总统计多张Excel
Sep 22 Python
Python urllib.request对象案例解析
May 11 #Python
python将dict中的unicode打印成中文实例
May 11 #Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 #Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 #Python
Python3自定义json逐层解析器代码
May 11 #Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 #Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 #Python
You might like
世界收音机发展史
2021/03/01 无线电
一个PHP数组应该有多大的分析
2009/07/30 PHP
php xml 入门学习资料
2011/01/01 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
python音频处理用到的操作的示例代码
2017/10/27 Python
Django权限机制实现代码详解
2018/02/05 Python
用Python逐行分析文件方法
2019/01/28 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
销售文员的岗位职责
2013/11/20 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
党员民主评议个人总结
2014/10/20 职场文书
党员争先创优承诺书
2015/01/20 职场文书
六五普法学习心得体会
2016/01/21 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android