当前位置: 首页 > news >正文

decode()方法——解码字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

  语法参考

解码是将字节流转换成字符串(文本),其他编码格式转成unicode。在Python中提供了decode()方法,该方法的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。decode()方法的语法格式如下:

bytes.decode([encoding="utf-8"][,errors="strict"])

参数说明:

l  bytes:表示要进行转换的字节数据,通常是encode()方法转换的结果。

l  encoding="utf-8":可选参数,用于指定进行解码时采用的字符编码,默认为utf-8,如果想使用简体中文可以设置为gbk或gb2312(与网站使用的编码方式有关)。当只有一个参数时,可省略前面的“encoding=”,直接写编码。

注意:在设置解码采用的字符编码时,需要与编码时采用的字符编码一致,如果不一致程序会出现错误提示,此时可以更换编码方式。

l  errors="strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用XML的字符引用)等,默认值为strict。

    快用锦囊

锦囊1  对指定的字符串进行解码

对指定的字符串进行解码,代码如下:

#定义字节编码

Bytes1=bytes(b'\xe6\x88\x91\xe7\x88\xb1Python')

#定义字节编码

Bytes2=bytes(b'\xce\xd2\xb0\xaePython')

str1=Bytes1.decode("utf-8")#进行utf-8解码

str2=Bytes2.decode("gbk")  #进行gbk解码

print(str1)                #输出utf-8解码后的内容

print(str2)                #输出gbk解码后的内容

运行程序,输出结果为:

我爱Python

我爱Python

锦囊2  操作不同编码格式的文件

建立一个文件test5.txt,文件格式为ANSI,内容如下:

机器码:NH57Q35XD5MZVI7ZWL7H2UX0I

用户名称:MZRCE44HHKBQ

用Python来读取,代码如下:

# coding=gbk

#用python来读取

print(open('./tmp/test5.txt').read())

运行程序,输出结果为:

机器码:NH57Q35XD5MZVI7ZWL7H2UX0I

用户名称:MZRCE44HHKBQ

将test5.txt另存为test51.txt,并将编码格式改为utf-8,再使用Python读取test51.txt,代码如下:

#用python读取uft-8编码格式的文本文件

f=open('./tmp/test51.txt','rb')

s=f.read()

f.close()

print(s)

运行程序,输出结果为:

b'\xef\xbb\xbf\xe6\x9c\xba\xe5\x99\xa8\xe7\xa0\x81\xef\xbc\x9aNH57Q35XD5MZVI7ZWL7H2UX0I\r\n\xe7\x94\xa8\xe6\x88\xb7\xe5\x90\x8d\xe7\xa7\xb0:MZRCE44HHKBQ \r\n'

此时出现了乱码,这是由于字符经过不同编码解码再编码的过程中使用的编码格式不一致导致的。那么,接下来我们使用decode()方法进行解码,代码如下:

print(s.decode('utf-8')) #使用decode()方法解码并输出

运行程序,输出结果为:

机器码:NH57Q35XD5MZVI7ZWL7H2UX0I

用户名称:MZRCE44HHKBQ

    应用场景

场景一:解码爬虫获取的字节形式代码

在使用python爬取指定的网页时,获取的内容中,如果汉字都是字节码的情况下,可以通过decode()方法实现html代码的解码工作。代码如下:

import requests        # 网络请求模块

# 对爬取目标发送网络请求

response = requests.get('https://www.baidu.com/')

html_bytes = response.content     # 获取爬取的内容,该内容为字节形式

print(html_bytes)                 # 打印字节形式的html代码

print(html_bytes.decode('utf-8')) # 打印解码后的html代码

运行程序,输出结果中字节形式<title>标签的内容如下:

<title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title>

输出结果中解码后<title>标签的内容如下:

<title>百度一下,你就知道</title>

相关文章:

  • tp8 mysql8原生查询统计
  • Python学生信息管理系统(完整代码)
  • PhysioLLM 个性化健康洞察:手表可穿戴设备实时数据 + 大模型
  • 代码随想录训练营第二十八天 122买卖股票的最佳时间II 55跳跃游戏 45跳跃游戏II 1005K次取反后最大化的数组和
  • 使用React复刻ThreeJS官网示例——keyframes动画
  • #数据结构 笔记三
  • 上海市计算机学会竞赛平台2023年6月月赛丙组选取子段(二)
  • webrtc-m120编译 (m126)
  • 深入浅出mysql分库分表
  • JAVA学习笔记2
  • Python 学习之常用第三方库(五)
  • 逻辑这回事(七)---- 器件基础
  • Docker 容器网络互连 自定义网络 程序互相访问
  • Java中集中常见的算法
  • 【C++设计模式】(一)面向对象编程的八大原则
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CentOS从零开始部署Nodejs项目
  • CSS盒模型深入
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript新鲜事·第5期
  • Laravel Telescope:优雅的应用调试工具
  • Python十分钟制作属于你自己的个性logo
  • Vim 折腾记
  • 阿里云应用高可用服务公测发布
  • 从零开始的无人驾驶 1
  • 从零开始在ubuntu上搭建node开发环境
  • 高性能JavaScript阅读简记(三)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 精彩代码 vue.js
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • $(function(){})与(function($){....})(jQuery)的区别
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (09)Hive——CTE 公共表达式
  • (1)SpringCloud 整合Python
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (六)c52学习之旅-独立按键
  • (转) Android中ViewStub组件使用
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)程序员疫苗:代码注入
  • . Flume面试题
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .ui文件相关
  • ?
  • @Bean, @Component, @Configuration简析
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [14]内置对象
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AIGC] Java List接口详解
  • [C++] Windows中字符串函数的种类
  • [C++]类和对象(中)
  • [codeforces]Recover the String
  • [CTO札记]盛大文学公司名称对联
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出