encode()方法——编码字符串

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

语法参考

编码是将文本(字符串)转换成字节流,Unicode格式转换成其他编码格式。在Python中提供了encode()方法,该方法的作用是将Unicode编码转换成其他编码的字符串,如图1所示。如str1.encode('gbk'),表示将Unicode编码的字符串str1转换成GBK编码。

图1  编码解码示意图

encode()方法的语法格式如下:

str.encode([encoding="utf-8"][,errors="strict"])

参数说明:

l  str:表示要进行转换的字符串。

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

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

说明:在使用encode()方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。

    快用锦囊

锦囊1  将指定字符串转为不同的编码格式

str='我爱Python' #定义字符串

utf8Str=str.encode(encoding='utf-8')               #采用utf-8编码

gbkStr=str.encode(encoding='gbk')                  #采用GBK编码

print(utf8Str)                                      #输出utf-8编码内容

print(gbkStr)                                       #输出GBK编码内容

运行程序,输出结果为:

b'\xe6\x88\x91\xe7\x88\xb1Python'

b'\xce\xd2\xb0\xaePython'

锦囊2  Python中URL链接的编码处理

最近在豆瓣电影搜索《千与千寻》的时候发现搜素链接是这样的:

https://movie.douban.com/subject_search?search_text=%E5%8D%83%E4%B8%8E%E5%8D%83%E5%AF%BB&cat=1002

很明显“千与千寻”被编码成了%E5%8D%83%E4%B8%8E%E5%8D%83%E5%AF%BB,那么在Python中如何处理这种链接呢?

首先来了解下URL编码方法:URL编码方式是把需要编码的字符转化为%xx的形式。通常URL编码是基于utf-8,也可能是gbk或gb2312(这与网站使用的编码方式有关)。

测试下上述链接中URL编码是否为“千与千寻”,首先使用encode()方法将“千与千寻”的编码格式设置为utf-8,然后使用urllib模块的quote函数将转码后的字符串设置为URL编码,代码如下:

from urllib.parse import quote

from urllib.parse import unquote

#编码测试

mystr1 = '千与千寻'.encode('utf-8')

#使用urllib模块quote函数进行编码

mystr2 = quote(mystr1)

print(mystr2)

#使用urllib模块unquote函数进行解码

print(unquote(mystr2))

运行程序,输出结果为:

%E5%8D%83%E4%B8%8E%E5%8D%83%E5%AF%BB

将结果与链接中的字符串对比完全一样,那么这种编码方式可以通过urllib模块的unquote函数进行解码。

锦囊3  生成高考志愿填报时的姓名区位码

区位码是一个4位的十进制数,每个区位码都对应着一个唯一的汉字或符号,它的前两位叫做区码,后两位叫做位码。区位码的应用非常广泛,比如考生在填写高考志愿表或者涂抹答题卡时,都会要求填写自己姓名对应的区位码。下面使用encode()方法对汉字进行GB2312编码,然后根据区位码的生成算法(区位码 = GB2312内码 C 160<十六进制数A0>),使用生成的GB2312编码进行计算即可。实现代码如下:

'''

  生成高考填报志愿时的姓名区位码

'''

def getCode(chinese):

    '''

    获取汉字对应区位码

    :param chinese: 单个汉字

    :return: 获取到的区位码

    '''

    barray = chinese.encode('gb2312') # 用GB2312对汉字进行编码

    # 计算区位码(如果是1位,则格式为2位)

    code = '{0:02d}'.format((barray[0] - 160)) + '{0:02d}'.format((barray[1] - 160))

    return code # 返回区位码

while True: # 循环输入

    name = input('请输入姓名:') # 记录输入的姓名

    for word in name: # 遍历输入的姓名

        print(word,':',getCode(word)) # 输入单个汉字及对应区位码

运行程序,输出结果为:

请输入姓名:高猿员

高 : 2463

猿 : 5219

员 : 5217

锦囊4  将字节类型的HTML代码写入文件

如果需要将字节类型的HTML代码写入文件时,首先需要设置open()函数中的“w”写入模式,然后再通过decode()方法对字节类型的字符串进行解码,最后再写入文件中。代码如下:

# 字节类型的html代码

html_bytes =bytes(b'<html>'

              b'<head>'

              b'<title>Python\xe7\xbc\x96\xe7\xa8\x8b\xe8\xaf\xad\xe8\xa8\x80</title>'

              b'</head>'

              b'<body>'

              b'<p>\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python</p>'

              b'</body>'

              b'</html>')

# 以“w”模式进行写入

with open('html_bytes' + ".html", "w") as f:

    # 将字节类型的html代码解码后写入文件中

    f.write(html_bytes.decode('utf-8'))

运行程序,打开html_bytes.html文件,浏览器显示如图2所示。

图2  html_bytes.html文件的运行效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何将 ONLYOFFICE 文档 Linux 版更新到 v8.1

本指南将向您展示如何将 ONLYOFFICE 文档 Linux 版本更新到最新 8.1 版本。 ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器&#xff0c;支持处理文本文档、电子表格、演示文稿、可填写表单、PDF 和电子书&#xff0c;可多人在线协作&#xff0c;支持 AI 集…

什么是ArchiMate?有优缺点和运用场景?

一、什么是ArchiMate? ArchiMate是一种由The Open Group发布的企业级标准&#xff0c;它是一种整合多种架构的可视化业务分析模型语言&#xff0c;也属于架构描述语言&#xff08;ADL&#xff09;。ArchiMate主要从业务、应用和技术三个层次&#xff08;Layer&#xff09;&…

CentOS停更无忧,中国操作系统闯入后CentOS时代

国际开源服务器操作系统CentOS停更&#xff0c;引发了中国操作系统火线进化——开源龙蜥操作系统社区涌现出大量的技术创新&#xff0c;相关创新技术迅速转化为商业化产品。2024年6月&#xff0c;浪潮信息与龙蜥社区联合发布服务器操作系统云峦KeyarchOS V5.8 新版本&#xff0…

哨兵模式--哨兵节点的功能?

哨兵节点的主要功能有&#xff1a; 集群监控&#xff1a;监控 主、从节点的健康状况&#xff1b;自动切换主节点&#xff1a;当 Master 运行故障&#xff0c;哨兵启动自动故障恢复流程&#xff1a;从 slave 中选择一台作为新 master。通知&#xff1a;让 slave 执行 replicaof…

笔记本电脑为什么可以链接热点,却无法连接WiFi

① 在开始菜单的搜索栏中&#xff0c;输入 cmd 。 ② 右击上方该程序&#xff0c;选择 以管理员身份运行 ③ 输入&#xff1a;nestsh winsock reset ④ 敲击回车&#xff0c;显示如下页面 ⑤ 再输入 ipconfig/flushdns 回车 ⑥ 然后重启电脑&#xff0c;OVER&#xff01;

赛目科技三度递表:净利率及资产回报率不断下滑,经营成本越来越高

《港湾商业观察》施子夫 5月29日&#xff0c;北京赛目科技股份有限公司&#xff08;以下简称&#xff0c;赛目科技&#xff09;第三次递表港交所&#xff0c;公司拟主板上市&#xff0c;独家保荐机构为光银国际。 公开信息显示&#xff0c;赛目科技此前曾于2022年12月&#x…

grpc学习golang版( 一、基本概念与安装 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、基本介绍1.1 什么是rpc1.2 什么是grpc1.3 grpc的作用1.4 grp…

添加用户页面(Flask+前端+MySQL整合)

首先导入Flask库和pymysql库。Flask用于创建Web应用程序&#xff0c;pymysql用于连接和操作MySQL数据库。 from flask import Flask, render_template, request import pymysql创建一个Flask应用实例。__name__参数告诉Flask使用当前模块作为应用的名称。 app Flask(__name_…

【C语言】解决C语言报错:Buffer Overflow

文章目录 简介什么是Buffer OverflowBuffer Overflow的常见原因如何检测和调试Buffer Overflow解决Buffer Overflow的最佳实践详细实例解析示例1&#xff1a;数组越界写入示例2&#xff1a;未检查输入长度示例3&#xff1a;字符串操作错误示例4&#xff1a;动态内存分配 进一步…

深度相机识别物体——实现数据集准备与数据集分割

一、数据集准备——Labelimg进行标定 1.安装labelimg——pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple 2.建立相应的数据集存放文件夹 3.打开labelimg&#xff0c;直接在命令行输入labelimg即可&#xff0c;并初始化 4.开始标注&#xff0c;设置标注好…

JeecgBoot新建模块

引言 jeecg-boot设置了demo, system等默认模块。在二次开发中&#xff0c;常常需要进行模块扩展。比如新增一个订单模块或支付模块。如何准确的新增模块&#xff0c;在此文进行记录。 步骤 新建模块 在项目点击右键&#xff0c;新建模块。 如下图。 注意&#xff1a;报名需…

4. node联调devtools

4. node联调devtools 把node代码放在开发者工具执行代码执行命令 node --inspect-brk js文件浏览器执行命令 chrome://inspect/#devices检测到文件之后会有个点击选项,点击进入就能调试自己的代码 有了开发者工具调试之后我们可以给自己的吐环境脚本在完善一下,当获取的参数是…

【算法刷题 | 动态规划14】6.28(最大子数组和、判断子序列、不同的子序列)

文章目录 35.最大子数组和35.1题目35.2解法&#xff1a;动规35.2.1动规思路35.2.2代码实现 36.判断子序列36.1题目36.2解法&#xff1a;动规36.2.1动规思路36.2.2代码实现 37.不同的子序列37.1题目37.2解法&#xff1a;动规37.2.1动规思路37.2.2代码实现 35.最大子数组和 35.1…

天池大赛Higress插件官方demo详细部署+调试

天池大赛Higress插件官方demo详细部署调试 契机 ⚙ 使用Higress AI网关优化AI调用成本。就是基于向量召回相似问题的缓存&#xff0c;降低LLM API调用成本。就是开发一个网关插件做QA缓存嘛。前文已经成功复现了hello-world插件&#xff0c;这次结合官方提供的AI-Cache插件自…

私域流量的深度解析与电商应用

一、私域流量的核心价值 在当今数字化时代&#xff0c;流量成为了企业发展的重要资源。与公域流量相比&#xff0c;私域流量以其独有的私有性和可复用性&#xff0c;为企业提供了与用户建立深度联系的机会。私域流量不仅有助于企业精准触达目标用户&#xff0c;还能通过数据分…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统&#xff1a; 3.在容器中安装mysql客户端&#xff1a; 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证&#xff1a;

vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则

比如以下内容&#xff1a; 配置的rules内容 const rulesref({title:[{required:true,message:"请输入标题",trigger:"blur"},{max:50,message:"最大不能超过256个字",trigger:"blur"}],Category:[{required:true,message:"请选择…

网络问题排障专题-数据分析

目录 一、各协议数据包介绍 1、Ping、DNS数据包介绍&#xff08;单包一来一回&#xff09; Ping DNS 2、TCP数据包 在正常情况下&#xff0c;TCP连接确实是从三次握手开始的。三次握手是建立TCP连接的过程&#xff0c;它的目的是确保双方都能够正常通信。 为啥要四次挥手…

阿里云常用的操作

阿里云常见的产品和服务 容器服务 可以查看容器日志、监控容器cpu和内存&#xff0c; 日志服务 SLS 可以查看所有服务的日志&#xff0c; Web应用防火墙 WAF 可以查看 QPS. 阿里云查看集群&#xff1a; 点击 “产品和服务” 中的 容器服务&#xff0c;可以查看 集群列表&…

树莓派Pico

树莓派Pico是树莓派基金会推出的一款基于RP2040微控制器的微型计算机板&#xff0c;它是专为需要高性能微控制器的应用场景设计的&#xff0c;特别适合于需要实时控制、低功耗和小型化解决方案的项目。以下是树莓派Pico的详细介绍&#xff1a; ### 核心特点&#xff1a; - **基…