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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python实现的Kmeans++算法实例
Apr 26 Python
在Python的web框架中编写创建日志的程序的教程
Apr 30 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
python感知机实现代码
Jan 18 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
Python3自定义json逐层解析器代码
May 11 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
Python使用Turtle模块绘制国旗的方法示例
Feb 28 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编程网上资源导航
2006/10/09 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
php对象工厂类完整示例
2018/08/09 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
将python代码和注释分离的方法
2018/04/21 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
django admin组件使用方法详解
2019/07/19 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
python如何判断IP地址合法性
2020/04/05 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
转党组织关系介绍信
2014/01/08 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
3的组成教学反思
2014/04/30 职场文书
一体化教学实施方案
2014/05/10 职场文书
施工安全协议书范本
2014/09/26 职场文书
先进学校事迹材料
2014/12/30 职场文书
教师节班会开场白
2015/06/01 职场文书