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,一经查实,立即删除!

相关文章

Kotlin 中的 infix 关键字(中缀函数)

在 Kotlin 中&#xff0c;infix 是一个关键字&#xff0c;用于定义中缀函数&#xff08;Infix Functions&#xff09;。 中缀函数允许我们在调用函数的时候使用更加简洁的中缀符号&#xff08;通常是一个操作符&#xff09;&#xff0c;而不是传统的点符号调用方式。中缀函数的…

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

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

2024软件测试面试题大全【含答案】

一、面试基础题 简述测试流程&#xff1a; 1、阅读相关技术文档&#xff08;如产品PRD、UI设计、产品流程图等&#xff09;。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例&#xff08;等价类划分法、边界值分析法等&#xff09;。 5…

ntp自动同步时间 ubuntu入门之二十四

当我们的电脑的CMOS电池失效时&#xff0c;我们可以在登陆shell之后通过脚本自动同步ntp时间。 Debian 11系统脚本编写如下&#xff1a; $ pwd /home/user$ ls Desktop Documents Downloads Music Pictures Public Templates Videos debian initrd mnt sync-time…

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

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

夏天喝酱香酒的好处有哪些?

夏天适合喝酱香酒的原因主要有促进新陈代谢、祛湿气、保护心脏等。下面酱酒亮哥将详细分析夏天适合喝酱香酒的具体原因&#xff1a; 促进新陈代谢 增加血液循环&#xff1a;夏天天气炎热&#xff0c;人体的新陈代谢本来就比冬季要旺盛&#xff0c;而酱香型白酒含有较多的酒精…

Batch 入门学习

Batch 入门学习 Batch 是一种在计算机科学和数据处理领域中广泛使用的技术&#xff0c;用于批量处理数据和任务。本文将带你深入了解 Batch 的基本概念、应用场景、工作原理和一些常用工具&#xff0c;帮助你快速入门 Batch 处理技术。 目录 Batch 概述Batch 处理的应用场景…

深度解析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;在地理信息的领域中&…

Feign:简化微服务通信的利器

介绍 1.1 什么是 Feign&#xff1f; Feign 是一个声明式、模板化的 HTTP 客户端&#xff0c;它简化了编写 Web 服务客户端的过程。它的主要目的是使 HTTP API 客户端的开发变得更加简单和直观。Feign 的设计理念是将 HTTP 客户端的细节隐藏在背后&#xff0c;使开发者可以专注…

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

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

使用 Selenium 获取 Web 页面信息的全指南

目录 为什么使用 Selenium 获取页面信息Selenium 基础设置获取页面标题获取当前 URL获取页面源代码获取元素的文本获取元素的属性获取 Cookie截图示例代码总结 正文 1. 为什么使用 Selenium 获取页面信息 在 Web 自动化测试和数据抓取中&#xff0c;获取页面信息是一个基本…

来聊聊nacos

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

opencv 图像的缩放(放大,缩小),翻转与旋转

目录 opencv 图像的缩放(放大&#xff0c;缩小)&#xff0c;翻转&#xff0c;旋转1、图像的缩放&#xff0c;旋转过程中为什么需要插值&#xff1a;2、常见的插值算法包括&#xff1a;3、图像的缩放&#xff0c;翻转&#xff0c;旋转&#xff1a;&#xff08;1&#xff09;图像…

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

随着科技的飞速发展&#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…

使用阿里云效API操作流水线

使用阿里云效&#xff08;Alibaba Cloud DevOps&#xff09;API操作流水线时&#xff0c;需要注意以下几个方面&#xff1a; 认证与授权 确保你已经获取了正确的访问凭证&#xff08;AccessKey ID 和 AccessKey Secret&#xff09;&#xff0c;并且这些凭证具有足够的权限来执行…

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

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