python中decode函数在哪个库_python encode和decode函数说明

字符串编码常用类型:utf-8,gb2312,cp936,gbk等。

Python中,我们使用decode()和encode()来进行解码和编码

在python中,使用unicode类型作为编码的基础类型。即

decode              encode

str ---------> unicode --------->str

u = u'中文' #显示指定unicode类型对象u

str = u.encode('gb2312') #以gb2312编码对unicode对像进行编码

str1 = u.encode('gbk') #以gbk编码对unicode对像进行编码

str2 = u.encode('utf-8') #以utf-8编码对unicode对像进行编码

u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,以获取unicode

u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的unicode类型

如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。

好消息来了,对,那就是python3,在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型(bytes)但是两个函数的使用方法不变:

decode              encode

bytes ------> str(unicode)------>bytes

u = '中文' #指定字符串类型对象u

str = u.encode('gb2312') #以gb2312编码对u进行编码,获得bytes类型对象str

u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,获得字符串类型对象u1

u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的字符串内容

避免不了的是,文件读取问题:

假如我们读取一个文件,文件保存时,使用的编码格式,决定了我们从文件读取的内容的编码格式,例如,我们从记事本新建一个文本文件test.txt, 编辑内容,保存的时候注意,编码格式是可以选择的,例如我们可以选择gb2312,那么使用python读取文件内容,方式如下:

f = open('test.txt','r')

s = f.read() #读取文件内容,如果是不识别的encoding格式(识别的encoding类型跟使用的系统有关),这里将读取失败

'''假设文件保存时以gb2312编码保存'''

u = s.decode('gb2312') #以文件保存格式对内容进行解码,获得unicode字符串

'''下面我们就可以对内容进行各种编码的转换了'''

str = u.encode('utf-8')#转换为utf-8编码的字符串str

str1 = u.encode('gbk')#转换为gbk编码的字符串str1

str1 = u.encode('utf-16')#转换为utf-16编码的字符串str1

python给我们提供了一个包codecs进行文件的读取,这个包中的open()函数可以指定编码的类型:

import codecs

f = codecs.open('text.text','r+',encoding='utf-8')#必须事先知道文件的编码格式,这里文件编码是使用的utf-8

content = f.read()#如果open时使用的encoding和文件本身的encoding不一致的话,那么这里将将会产生错误

f.write('你想要写入的信息')

f.close()

知识点

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

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

相关文章

《线性代数的几何意义》笔记(1)

如何理解“线性代数”这四个字? 线性代数 线性 代数。 线性,是指线性代数这门学科研究的是线性问题。线性是理想化的,但是也是最基础的。实际工程中如果有非线性的问题,可以通过转化成线性问题来近似求解。 线性有两个特性&…

ipython jupyter区别_ipython jupyter notebook中显示图像和数学公式实例

1. # 可以使用LaTeX表示数学公式# 可以使用LaTeX表示数学公式from IPython.display import LatexLatex(r"$\sqrt{x^2y^2}$")2. # SymPy的表达式也可以显示为LaTex%load_ext sympyprintingfrom sympy import *x, y symbols("x,y")sqrt(x**2y**2)3. # 用Ima…

【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分

时序图教程 甲序列图描述了一组对象之间的相互作用参与协作(或情况),布置成按时间顺序; 它通过它们的“生命线”和它们发送给对方的消息来显示参与交互的对象。 什么是UML中的序列图? UML序列图是详细说明如何执行操作的交互图。…

【转】[完全免费] 在线UML Class Diagram 类图工具 - 教程第1部分

在线Visual Paradigm - UML编辑器 使用在线UML编辑器轻松绘制UML图,其中包含功能强大的UML编辑工具,即时UML语法检查和整洁的用户界面。Visual Paradigm在线UML 图,如类,用例,序列,活动,部署&a…

python 定时器_python 线程之四:定时器(Timer),非阻塞

线程之一讲了线程,如果不熟悉,可以点击【线程之一:线程的创建、启动及运行方式】1、定时器实质:Timer 定时器源码实现,和我们自定义一个线程方式一样,都是继承了 Thread 类,重写了 run() 方法&a…

人如何认知事物?

自然界是连续的,人类将自然界离散化成一个个独立的概念,独立的概念相互关联,形成模型,随着模型的完善,模型会不断逼近真实事物。 比如人类创造了各种学科,就是从不同的方面深入研究世界的结果。 所以&…

域内定位个人PC的三种方式(1)

会话搜集 在cmd下调用query session命令可以获得当前环境下的windows会话 NetSessionEnum 这个函数不允许直接查询是谁登陆,但是它允许查询是谁在访问此工作站的网络资源时所创建的网络会话,从而知道来自何处,此函数不需要高权限即可查询 第…

python手机销售系统结论于心得_(工作心得体会)手机销售心得总结

手机销售心得总结为更方面广大消上手机销售系统应景产生。下面是为大家整理的手机销售心得总结,供你参考!手机销售心得总结篇1XX年销售工作基本结束了,在整个团队的全年努力奋斗下,比XX年销量增幅12.5%,但在市场占有率和全国a类分…

02.Teams组成概述及使用分享

在上一篇博客中介绍了Teams的前世今生,大家对Teams已经有了一个初步的认识,但是如上一篇文章中所说Teams是一个集成度很高的云协作平台,具体应该怎么去有效的利用起来呢?接下来这篇博客给大家全方位的分享一下Teams的组成部分以及…

【Qt】解决GDAL直接读取数据到QImage导致图像歪斜的问题

QRect intersect_rect; .... QImage img(intersect_rect.size(), QImage::Format_RGB888); uchar *pImageData (unsigned char *)img.constBits(); int img_width intersect_rect.width(); int img_height intersect_rect.height();// QImage每行是按照sizeof(int)对齐的&am…

高斯课堂数电讲义笔记_【法考经验贴】40岁三战主观题127分!他的笔记学习法助他逆袭!...

这位学员在考证界算是“高龄学员”,高分过关依赖于他的努力和正确的学习方法;本文中他有重点介绍自己是如何做笔记的,非常值得大家学习借鉴!一、个人概况:三战法考我正值不惑之年,是一名在职基层人民警察&a…

【转】持续交付和DevOps的前世今生

作者/分享人:乔梁,20年IT老兵,腾讯公司高级管理顾问,敏捷和精益开发专家,持续交付领域先行者。曾就职于百度,国内多个知名互联网公司的企业教练。 历年QCon技术大会的讲师和专题出品人。 这是一个新概念风起…

关联规则挖掘算法_基于Apriori关联规则的协同过滤算法

Apriori 算法apriori关联规则算法的原理设计较为简单,著名的“啤酒和尿布”说的就是Apriori算法,通俗来讲apriori旨在寻找频繁项集,以帮助商家将消费者有可能一起搭配购买的物品放置在同一个地方,提高消费者的购物效率和良好的购物…

【转】RabbitMQ六种队列模式-1.简单队列模式

前言 RabbitMQ六种队列模式-简单队列 [本文]RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 在官网的教程中,描述了如上六类工作队列模式: 简单队列模式:最简单的…

词汇释义

原语:原子语言,执行过程中不能被打断。原,并不是指原来的,初始的,是指原子!表示不可分割的意思。

【转】RabbitMQ六种队列模式-2.工作队列模式

前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列 [本文]RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 上文我们了解了 RabbitMQ 六种队列模式中的简单队列,代码也是非常的简单,比较容易…

redis 哨兵模式 cluster模式区别_Redis哨兵(Sentinel)模式快速入门

当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 所以更多时候,我们优先考虑哨兵(sentinel) 模式。Redis sentinel是Redis高可用实现方案&#xff…

IOS开发入门笔记

IB:IB是指Interface Builder,如IBAction,IBOutlet。IBOutlet和IBAction是什么?IBOutlet:中文翻译应该是:插座,连接点(书上写的是出口)。autorelease相当于Qt中的deleteLa…

【转】RabbitMQ六种队列模式-3.发布订阅模式

前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅 [本文]RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 上文的工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的…