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中MYSQLdb出现乱码的解决方法
Oct 11 Python
python开启多个子进程并行运行的方法
Apr 18 Python
浅谈Python 对象内存占用
Jul 15 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
Python中偏函数用法示例
Jun 07 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
python文件编写好后如何实践
Jul 07 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
anaconda升级sklearn版本的实现方法
Feb 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
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
jquery使用经验小结
2015/05/20 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
angular多语言配置详解
2019/05/16 Javascript
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
Java servlet面试题
2012/03/04 面试题
请假条标准格式规范
2014/04/10 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
爱心募捐通知范文
2015/04/27 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电