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文件的运行效果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux_应用篇(24) CAN 应用编程基础

本章我们学习 CAN 应用编程&#xff0c; CAN 是目前应用非常广泛的现场总线之一&#xff0c;主要应用于汽车电子和工业领域&#xff0c;尤其是汽车领域&#xff0c;汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。 CAN 总线目前是自动化领域发展的热点技术之一&#xf…

活动|华院计算受邀参加2024全球人工智能技术大会(GAITC),探讨法律大模型如何赋能社会治理

6月22至23日&#xff0c;备受瞩目的2024全球人工智能技术大会&#xff08;GAITC&#xff09;在杭州市余杭区未来科技城隆重举行。本届大会以“交叉、融合、相生、共赢”为主题&#xff0c;集“会、展、赛”为一体&#xff0c;聚“产、学、研”于一堂。值得一提的是&#xff0c;…

深度解析RocketMq源码-消费者索引ConsumeQueue

1.绪论 rocketmq的broker中关于消息持久化的组件主要包含三个&#xff0c;分别是&#xff1a;持久化消息到文件中的组件commitLog&#xff1b;根据消息key索引commitLog日志的indexFile&#xff1b;消费者根据topic和queueId查询commitLog日志的consumeQueue。前面已经介绍com…

使用QGIS进行研究区域制图实战

目录 前言 一、QGIS的版本和数据介绍 1、关于QGIS版本 2、需要准备的数据 二、准备制图 1、制作全国区位图 2、矢量和遥感信息的编辑 三、出图编辑 1、设置主题信息 2、打印布局制作 3、美化地图 总结 前言 俗话说“一图胜千言”&#xff0c;在地理信息的领域中&…

ai智能语音机器人在电销里发挥怎样的作用

得益于语音识别技术的的进步&#xff0c;人工智能发展越来越成熟。相信作为企业的管理者&#xff0c;都遇到过这样的事&#xff1a;一个电销新人刚刚入行&#xff0c;需求经过一两个月的学习培训才能成为一名合格的销售人员。在这段学习的期间&#xff0c;企业投入的成本是没有…

来聊聊nacos

先关注下下方公众号呗&#xff1a; 第1部分&#xff1a;引言 微服务的挑战 尽管微服务架构带来了许多好处&#xff0c;如敏捷性、可扩展性和容错性&#xff0c;但它也带来了一些挑战&#xff0c;特别是在服务发现、配置管理、服务间通信和运维管理方面。这些挑战需要有效的解…

混凝土搅拌站中的智能化系统应用

随着科技的飞速发展&#xff0c;混凝土搅拌站已经进入了现代化、智能化的新时代。现代自动化、智能化技术的应用&#xff0c;使得混凝土搅拌站更加高效、准确、可靠&#xff0c;同时也提高了生产效率和质量。本文将带你深入探索混凝土搅拌站中运用到现代自动化、智能化的方方面…

Java代码基础算法练习-删除有序数组中的重复项-2024.05.07

任务描述&#xff1a; 有一批同学需要计算各自的出生年月是否闰年。请使用算法计算出他们的出生年份是否闰年。 解决思路&#xff1a; 如果要一次性输出结果&#xff0c;就是先输入数字n&#xff0c;确定首先循环几次&#xff0c;在每次循环中进行闰年判断操作&#xff0c;每次…

国外的Claude3.5 Sonnet Artifacts和国内的CodeFlying孰强孰弱?

在Claude 3.5 Sonnet发布后&#xff0c;最受大家关注的问题应该就是它在编写代码能力上的变化。 要知道在Claude3.0发布以来的这几个月就因为它的编写代码能力而一直受到人们的诟病。 那Anthropic这次终于是不负众望&#xff0c;在Claude 3.5 Sonnet中更新了一个叫做Artifact…

【STM32】SysTick系统滴答定时器

1.SysTick简介 CM4内核的处理和CM3一样&#xff0c;内部都包含了一个SysTick定时器&#xff0c;SysTick 是一个24 位的倒计数定时器&#xff0c;当计到0 时 &#xff0c;将 从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除&#xf…

优维“统一开放平台”:开放、开发、集成、客制化

基于丰富完善的产品体系&#xff0c;优维重磅推出了统一开放平台。这款由优维自主设计与研发&#xff0c;集数据开发、能力开放、能力集成、客制化为一体的统一开放平台&#xff0c;具备应用市场、应用开发、连接能力、采控平台、API集市、开发者工具等功能模块&#xff0c;可为…

【RNN练习】LSTM-火灾温度预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前期准备工作 import torch.nn.functional as F import numpy as np import pandas as pd import torch from torch import nn1. 导入数据 data pd.read_cs…

LLM大模型实战 —— DB-GPT阿里云部署指南

简介&#xff1a; DB-GPT 是一个实验性的开源应用&#xff0c;它基于FastChat&#xff0c;并使用vicuna-13b作为基础模型, 模型与数据全部本地化部署, 绝对保障数据的隐私安全。 同时此GPT项目可以直接本地部署连接到私有数据库, 进行私有数据处理&#xff0c; 目前已支持SQL生…

慌慌张张,匆匆忙忙,又是学习的一天

今天学进程 进程的状态 &#xff08;本科的考点我记得哈哈&#xff09; 什么是线程 线程的状态 线程和进程的区别 一个共享 一个私有 独立 多线程的优缺点 线程的分类 内核支持线程 用户级线程 组合方式线程 协程coroutine 进程 分配资源的最小单位 线程 是cpu调度的最小…

Spring AI之后,阿里推出Spring Cloud Alibaba AI,接入体验篇——Java也能方便用 AI

阿里推出Spring Cloud Alibaba AI&#xff0c;接入体验篇——Java也能方便用 AI 1.Spring AI2.Spring Cloud Alibaba AI3. 接入体验 1.Spring AI Spring AI 是 Spring 官方社区项目&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 Java 开发者像使用 Spring 开发普通…

NSSCTF-Web题目18(反序列化)

目录 [NISACTF 2022]babyserialize 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]ez_ez_unserialize 4、题目 5、知识点 6、思路 [NISACTF 2022]babyserialize 1、题目 2、知识点 反序列化、绕过过滤、命令执行 3、思路 <?php include "waf.php";…

基于Vue,mysql,JavaEE的简单投票与投票管理系统

项目介绍 ​ 本项目&#xff0c;基于Vue2.6,mysql,JavaEE 实现简单的投票与投票管理系统 项目地址 VotingSystem: 投票系统1.0 管理员和普通用户 (gitee.com) 有问题请评论私聊哦 项目分类 数据库 创建投票人&#xff0c;被投票人&#xff0c;投票关系&#xff08;追踪谁…

float8格式

产生背景 在人工智能神经元网络中&#xff0c;一个参数用1字节表示即可&#xff0c;或者说&#xff0c;这是个猜想&#xff1a;因为图像的颜色用8比特表示就够了&#xff0c;所以说&#xff0c;猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位&#xff0c;分为…

【操作与配置】WSL配置LINUX

WSL2&#xff08;Windows Subsystem for Linux 2&#xff09;是Microsoft开发的一项技术&#xff0c;允许用户在Windows操作系统上运行Linux发行版。WSL2是WSL&#xff08;Windows Subsystem for Linux&#xff09;的第二版&#xff0c;带来了许多改进和新特性。 官网&#xff…

EXCEL 复制后转置粘贴

nodepad 转置参考&#xff1a; https://editor.csdn.net/md/?articleId140014651 1. WPS复制后转置粘贴 复制-》右键-》顶部第一行-》粘贴行列转置&#xff0c;如下图&#xff1a; 2. Excel office365 本地版 2. Excel office365 在线版