29 Python - 字符与编码

字符与编码

01 字符串本质

 

 

Python字符串相关概念

字符串     str

字节       bytes

字节数组   bytearray

 

电脑字符串存储机制

字符库:A、B每个字符有一个代码点如A是65  B为66,这种是方便人类读写的形式,但是最终需要存入计算机的CPU和内存,需要转换成字节的二进制,就涉及到字节的编码。

字节的编码:如A的字节编码为b开头的b‘A’,对应的二进制为0100 0001(激素65的二进制编码)

因为ASCII编码比较简单,直接把代码点当成二进制编码来存储

将字符转换为字节的过程我们称为编码,反之称为解码;如我们最常见的ASCII编码就是负责编码和解码的工作

但是后来各个国家都有字节的字符集,就出现了很多字符集合字符编码。

不同编码并存的解决办法,就是unicode,但是这个长度固定,有点浪费空间。现在比较流行的就是utf8是可变字节即可变长的编码

 

 

 

 

02 ASCII UTF8编码

 

 

ASCII:用于常见英文字符,存在一个Byte中,0-127(即代码点)

Python插件ASCII代码点和字符互查的函数

 

 

 

UTF-8最通用

 

 

 

 

 

03 字节与文本的编码 解码

 

 

字符编码为字节

例子:

s1位字符,

使用encode(‘指定编码’)编码为字节,

其中b开头意思为字节

中文用ASCII无法编码,需要用UTF8进行编码

 

 

 

字节解码为字符

例子

B1位字节码

       利用decode(‘指定编码’)进行解码

 

 

 

 

Python的编码和解码不指定的话,默认为UTF8

 

 

Python的文件操作如果不指定编码,默认以GBK操作(以操作系统编码为准),所以文本操作建议指定编码

 

 

04 bytes str bytesarray之间互相转换

在内存表现的永远是字符串,存储或运算过程中总以字节形式存在

 

 

 

001字符到字节

(1)利用字符的方法encode

 

 

(2)文本形式以二进制进行读取

 

 

(3)利用字节的bytes方法——字节大小不能超过256

 

 

 

 

 

002 字节到字符

 

 

 

 

 

003 字节数组bytearray

形式

 

 

(1)字符s1存入字节数组中,利用bytearray(字符串,编码)

 

 

(2)字节数组可以通过下标取值  可以改变值

 

 

(3)支持很多列表的很多方法

 

 

Append的值大小不能超过256

 

 

 

(4)字节数组转换为字符

 

 

 

 

05 字符串BOM处理

BOM字节顺序标记

 

 

 

有一个文件data.txt

 

 

打开读取内容,想忽略字节顺序标记

 

 

 

 

字节写入文件,写入字节顺序标记

 

 

 

转载于:https://www.cnblogs.com/yijiexi/p/11140657.html

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

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

相关文章

Linux 内存管理与系统架构设计

Linux 提供各种模式(比如,消息队列),但是最著名的是 POSIX 共享内存(shmem,shared memory)。 Linux provides a variety of schemes (such as message queues), but most notable is POSIX shar…

如何正确使用Node.js中的事件

by Usama Ashraf通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before event-driven programming became popular, the standard way to communicate between different parts of an application was pretty straightforward: …

你的成功有章可循

读书笔记 作者 海军 海天装饰董事长 自我修炼是基础。通过自我学习,在预定目标的指引下,将获取的知识转化为个人能力,形成自我规律,不断循环,实现成功。 寻找和掌握规律,并熟练运用于实践,是成功…

98k用计算机图片,98K (HandClap)_谱友园地_中国曲谱网

《98K》文本歌词98K之歌-HandClap-抖音 制谱:孙世彦这首《HandClap》是Fitz&TheTantrums乐队演唱的一首歌曲,同时也是绝地求生中嚣张BGM,是一首吃鸡战歌!这首歌谱曲者和填词者都是三个人:JeremyRuzumna&#xff0c…

qt之旅-1纯手写Qt界面

通过手写qt代码来认识qt程序的构成,以及特性。设计一个查找对话框。以下是设计过程1 新建一个empty qt project2 配置pro文件HEADERS \Find.h QT widgetsSOURCES \Find.cpp \main.cpp3 编写对话框的类代码例如以下://Find.h #ifndef FIND_H #define F…

【随笔】写在2014年的第一天

想想好像就在不久前还和大家异常兴奋地讨论着世界末日的事,结果一晃也是一年前的事了。大四这一年,或者说整个2013年都是场摇摆不定的戏剧,去过的地方比前三年加起来还多的多,有时候也会恍惚地不知道自己现在在哪。简单记几笔&…

设计冲刺下载_如何运行成功的设计冲刺

设计冲刺下载by George Krasadakis通过乔治克拉萨达基斯(George Krasadakis) Design Sprints can generate remarkable output for your company — such as a backlog of impactful ideas, functional prototypes, learning and key insights from customers along with real…

leetcode 18. 四数之和(双指针)

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a b c d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重…

WPF:从WPF Diagram Designer Part 4学习分组、对齐、排序、序列化和常用功能

在前面三篇文章中我们介绍了如何给图形设计器增加移动、选择、改变大小及面板、缩略图、框线选择和工具箱和连接等功能,本篇是这个图形设计器系列的最后一篇,将和大家一起来学习一下如何给图形设计器增加分组、对齐、排序、序列化等功能。 WPF Diagram D…

win7如何看计算机用户名和密码怎么办,win7系统电脑查看共享文件夹时不显示用户名和密码输入窗口的解决方法...

win7系统使用久了,好多网友反馈说win7系统电脑查看共享文件夹时不显示用户名和密码输入窗口的问题,非常不方便。有什么办法可以永久解决win7系统电脑查看共享文件夹时不显示用户名和密码输入窗口的问题,面对win7系统电脑查看共享文件夹时不显…

ASP.NET Core跨域设置

项目中经常会遇到跨域问题,解决方法: 在appsettings.json 文件中添加json项 {"Logging": {"LogLevel": {"Default": "Warning"}},"AllowedHosts": "*","AppCores": "https…

微信客户端<->腾讯微信服务器<->开发者服务器

出自 http://blog.csdn.net/hanjingjava/article/details/41653113 首先,通过Token验证,将公众号接入开发者服务器,这样客户端发给公众号的信息会被转发给开发者服务器; 第二,组装微信特定消息格式,返回给用…

idea提高调试超时_如何提高您的调试技能

idea提高调试超时by Nick Karnik尼克卡尼克(Nick Karnik) 如何提高您的调试技能 (How to Improve Your Debugging Skills) All of us write code that breaks at some point. That is part of the development process. When you run into an error, you may feel that you do…

leetcode 834. 树中距离之和(dp)

给定一个无向、连通的树。树中有 N 个标记为 0...N-1 的节点以及 N-1 条边 。第 i 条边连接节点 edges[i][0] 和 edges[i][1] 。返回一个表示节点 i 与其他所有节点距离之和的列表 ans。示例 1:输入: N 6, edges [[0,1],[0,2],[2,3],[2,4],[2,5]] 输出: [8,12,6,10,10,10] 解…

CSS设计指南(读书笔记 - 背景)

本文转自william_xu 51CTO博客,原文链接:http://blog.51cto.com/williamx/1140006,如需转载请自行联系原作者

在计算机网络中 带宽是什么,在计算机网络中,“带宽”用____表示。

答案查看答案解析:【解析题】计算机的发展经历了4个时代,各个时代划分的原则是根据()。【解析题】计算机网络的最主要的功能是______。【解析题】冯.诺依曼提出的计算机工作原理为____。【解析题】计算机的通用性使其可以求解不同的算术和逻辑问题,这主要…

如何在iOS上运行React Native应用

by Soujanya PS通过Soujanya PS 如何在iOS上运行React Native应用 (How to run a React Native app on iOS) I recently started to develop a React-Native app on iOS. This was my first foray into native app development. I was surprised by the ease and level of abs…

导出excel 后 页面按钮失效(页面假死)

在 page_load 里加上如下代码:string beforeSubmitJS "\nvar exportRequested false; \n"; beforeSubmitJS "var beforeFormSubmitFunction theForm.onsubmit;\n"; beforeSubmitJS "theForm.onsubmit function(){ \n"; …

Mysql分组查询group by语句详解

(1) group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组(2) group by可用于单个字段分组,也可用于多个字段分组 select * from employee; --------------------------------------------- | num | d_id | name | age | sex | homea…

leetcode 75. 颜色分类(双指针)

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码…