python的encode()和decode()的用法及实例

这篇具有很好参考价值的文章主要介绍了python的encode()和decode()的用法及实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

很多时候我们读取数据容易看到的是乱码,因为编写这个文件的人为了存储、私密保存等原因会用utf-8、gbk、ASCII等进行编码。编码我们可以用encode方法,解码我们可以用decode方法。

目录

1.encode函数的用法及实例

(1)encode()的语法

(2)用法:将目标字符串str编写为目标二进制数据bytes类型,即为编码过程。

(3)实例

①转为目标bytes类型

②查看返回类型

2.decode函数的用法及实例

(1)decode()的语法

(2)用法:将目标二进制数据bytes转为目标字符串str类型,即为解码过程。

(3)实例

​编辑

3.常见报错和解决方法 

(1)UnicodeEncodeError:因特殊符号在某编码不存在/不兼容而报错

①UnicodeEncodeError报错

②UnicodeDecodeError报错

(3)AttributeError: 'str' object has no attribute 'decode'


1.encode函数的用法及实例

(1)encode()的语法

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

参数说明:

str:表示需要编码的字符串,用引号引开。

encoding="utf-8":参数可选写,默认编写为"utf-8",常用的是utf-8,保存为中文形式可直接写为"gbk",简体中文为"gb2313"。

errors="strict":参数可选,默认为"strict",表示不兼容则报错。

指定错误处理方式,其可选择值可以是:
strict:遇到非法字符就抛出异常。
ignore:忽略非法字符。
replace:用“?”替换非法字符。
xmlcharrefreplace:使用 xml 的字符引用。

(2)用法:将目标字符串str编写为目标二进制数据bytes类型,即为编码过程。

(3)实例

①转为目标bytes类型

#定义str
str = '我爱我的强大的国家——中国'

#①默认编码类型utf-8和报错方式为strict
a = str.encode()
a

#②编码类型为‘gbk’和默认报错方式为strict
b = str.encode(encoding='gbk')
b

#④编码类型为‘gb18030’和默认报错方式为strict
c = str.encode(encoding='gb18030')
c

#⑤编码类型为‘gbk’和默认报错方式为ignore
e = str.encode(encoding='gb2312',errors ='ignore')
e

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言 

②查看返回类型

type(str.encode(encoding='gb18030'))

返回结果为 :bytes

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言


2.decode函数的用法及实例

(1)decode()的语法

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

参数说明:

bytes:表示要进行转换的二进制数据。

encoding="utf-8":参数可选写,默认编写为"utf-8",常用的是utf-8,解码为中文形式可直接写为"gbk",简体中文为"gb2313"。

errors="strict":参数可选,默认为"strict",表示不兼容则报错。

指定错误处理方式,其可选择值可以是:
strict:遇到非法字符就抛出异常。
ignore:忽略非法字符。
replace:用“?”替换非法字符。
xmlcharrefreplace:使用 xml 的字符引用。

(2)用法:将目标二进制数据bytes转为目标字符串str类型,即为解码过程。

(3)实例

#解码decode
#定义str
str = '我爱我的强大的国家——中国'

#解码utf-8类型
#定义bs
bs=str.encode() #默认utf-8类型的bytes
a = bs.decode()
a

#解码gb18030类型
#①解码为gb18030
bs=str.encode(encoding='gb18030') #默认utf-8类型的bytes
b = bs.decode(encoding='gb18030')
b

#②解码为gbk
c = bs.decode(encoding='gbk')
c

#③解码为gb2312
d = bs.decode(encoding='gb2312')
d

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言


3.常见报错和解决方法 

(1)UnicodeEncodeError:因特殊符号在某编码不存在/不兼容而报错

①UnicodeEncodeError报错

UnicodeEncodeError: 'gb2312' codec can't encode character '\u2014' in position 9: illegal multibyte sequence

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言

报错原因:一些特殊符号在编码的gb2312中不存在无法编码。图中不存在的是“——”,所以报错显示第9+1的位置存在不能编写为“gb2312”的字符,所以报错。

解决办法1:将 'gb2312'改成兼容更多的编码比如gbk或者gb18030。所以,此种情况,可以尝试用和当前编码(gb2312)兼容的但所包含字符更多的编码(gb18030)去解码。

兼容性:gb2312<gbk<gb18030

解决办法2:一种忽略错误的方法是将errors报错方式设置为“ignore”,但是一般不选择这个方法。

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言

②UnicodeDecodeError报错

UnicodeDecodeError: 'gb18030' codec can't decode byte 0x80 in position 28: illegal multibyte sequence

原因:utf-8编码存在特殊的字符‘gb18030’的编码不存在就会报错。

解决方法1:解码用之前编码的语言,对于不是自己编码的一般‘utf-8’更常用,可以用‘utf-8’尝试去解码。

解决方法2:一种忽略错误的方法是将errors报错方式设置为“ignore”,但是一般不选择这个方法。

(3)AttributeError: 'str' object has no attribute 'decode'

解决方法:str.encode().decode()  即需要先编码再解码。


小剧场 :最近太忙了,都没时间更新博文,今天乘有时间赶紧更新一个博文分享我的学习小总结并巩固一下这些知识点。家人们对我的分享有什么建议可以留言和我说哦~

encode和decode的用法,python基础用法,经验分享,python,其他,开发语言

 

参考文献:Python encode()和decode()方法:字符串编码转换 (biancheng.net)文章来源地址https://www.toymoban.com/news/detail-576619.html

到了这里,关于python的encode()和decode()的用法及实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Transformer系列(1)】encoder(编码器)和decoder(解码器)

    前言 这个专栏我们开始学习transformer,自推出以来transformer在深度学习中占有重要地位,不仅在NLP领域,在CV领域中也被广泛应用,尤其是2021年,transformer在CV领域可谓大杀四方。 在论文的学习之前,我们先来介绍一些专业术语。本篇就让我们先来认识一下encoder和decoder吧!

    2024年03月25日
    浏览(47)
  • [office] Excel CHITEST 函数 使用实例教程 #媒体#知识分享#其他

    Excel CHITEST 函数 使用实例教程 此函数已由 CHISQ.TEST 函数替换,新函数可以提供更好的精确度,其名称更好地反映其用法。旧函数仍可用于与早期版本Excel 的兼容。但是,如果不需要向后兼容,那么应考虑直接使用新函数,因为新函数能更准确地描述其功能。 Excel 2003+ CHITEST

    2024年02月19日
    浏览(34)
  • KILM: Knowledge Injection into Encoder-Decoder Language Models

    本文是LLM系列文章,针对《KILM: Knowledge Injection into Encoder-Decoder Language Models》的翻译。 大型预训练语言模型(PLMs)已被证明在其参数内保留隐含知识。为了增强这种隐性知识,我们提出了知识注入语言模型(KILM),这是一种通过持续预训练生成知识填充目标将实体相关知识注入编

    2024年02月07日
    浏览(24)
  • transfomer中Decoder和Encoder的base_layer的源码实现

    本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 Encoder和Decoder共同组成transfomer,分别对应图中左右浅绿色框内的部分. Encoder: 目的:将输入的特征图转换为一系列自注意力的输出。 工作原理:首先,通过卷积神经网络(CNN)提取输入图像的特征。然后,

    2024年01月18日
    浏览(37)
  • 深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用

    卷积神经网络(CNN)是一种特别适用于处理具有网格结构的数据,如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统,这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手头有一张手写数字的照片,你希望计算机能够识别出

    2024年04月28日
    浏览(33)
  • 蓝桥杯单片机零基础到国二经验分享

             我参加的是第十三届蓝桥杯大赛,从最开始的零基础,毫无头绪,到拿下国二,颇有体会,在这里将我的备赛经验分享给大家,希望可以帮到一些正在备赛的蓝桥杯er 目录 一. 蓝桥杯-单片机组介绍 二 . 零基础到国二历程         客观题:         程序题:

    2024年02月03日
    浏览(31)
  • 零基础小白怎么准备蓝桥杯-蓝桥杯竞赛经验分享

    博主在蓝桥杯中获得过十四届Java B 组的省一国二,本文为大家介绍一下蓝桥杯并分享一下自己的参赛经验。 ​ 蓝桥杯全称《蓝桥杯全国软件和信息技术专业人才大赛》,是由国信蓝桥和工信部举办的全国性IT学科赛事。全国1200余所高校参赛,累计参赛人数超过40万人。蓝桥

    2024年02月04日
    浏览(30)
  • 零基础成为网络工程师经验分享,附完整学习路线

    总有粉丝问我:零基础怎么成为网络工程师?最近正好在整理一份学习路线,趁着这个契机来分享一下经验。 相比IT类的其它岗位,网络工程师的学习方向是比较明亮的。想要成为网络工程师,华为认证就是最好的学习方法。而网络工程师的从零开始学习就是从华为认证的初

    2024年02月02日
    浏览(45)
  • 西安邮电大学计算机学院考研专业课832(计算机基础综合)经验分享

    先贴成绩: 目录及大纲:  西安邮电大学2023年硕士研究生招生专业目录-西安邮电大学研究生院 (xupt.edu.cn) 对应专业:081200计算机科学与技术,083500软件工程 试卷结构:总分150,微机原理75+数据结构75 关于变更2023年硕士研究生招生考试部分学科初试自命题科目的公告-西安邮

    2023年04月19日
    浏览(36)
  • 【python学习】基础篇-编码与解码 decode()方法 将对象元素打包成元组zip()函数

    在 Python 中使用字符串对象的encode()方法来实现编码。 encode0 方法是字符串对象内置的一个实现方法用于实现编码操作。语法格式如下: str.encode([encoding[,errors]]) 解码字符串则需要使用 bytes 对象的 decode0 方法来实现。 bytes.decode([encoding[,errors]]) 参数encoding 表示要进行编码的字符

    2023年04月19日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包