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黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
python分割列表(list)的方法示例
May 07 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
python实现单链表的方法示例
Sep 03 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
python实现将json多行数据传入到mysql中使用
Dec 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
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
用Python抢过年的火车票附源码
2015/12/07 Python
import的本质解析
2017/10/30 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
审核会计岗位职责
2013/11/08 职场文书
商务会议邀请函
2014/01/09 职场文书
探亲邀请信范文
2014/01/30 职场文书
国际商务专业求职信
2014/07/15 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年学校工作总结
2014/11/20 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android