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

该文章已生成可运行项目,

自学python如何成为大佬(目录):https://blog.youkuaiyun.com/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>

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值