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 open读写文件实现脚本
Sep 06 Python
python中的lambda表达式用法详解
Jun 22 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
python字典通过值反查键的实现(简洁写法)
Sep 30 Python
python OpenCV学习笔记
Mar 31 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
杏林同学录(四)
2006/10/09 PHP
php合并js请求的例子
2013/11/01 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
urllib2自定义opener详解
2014/02/07 Python
Python的高级Git库 Gittle
2014/09/22 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python使用turtle库绘制树
2018/06/25 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
python实现简单遗传算法
2020/09/18 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
成龙洗发水广告词
2014/03/14 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
redis限流的实际应用
2021/04/24 Redis
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技