python_字符编码&格式化
电脑最小储存单位是bit(位),8bit为一个Byte(字节),
8bit=1Byte
1024Byte=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
编码的故事:
计算机是美国人发明的,最早只有127个字符编码,编码表被称为ASCII
编码,中文怎么办?中国就把中文编进去,制定了GB2312
编码,日本把日文编到Shift_JIS
里,韩国把韩文编到Euc-kr
里..............这样会出现什么情况,假如我一个本档的内容有中文,英文,显示就会乱码,我们说的乱码,就是某个中文字符编码表没有,就无法正确显示出来了
所以出现了Unicode编码,把所有语言都统一到这套编码里,但是Uniccode通常是1个字符要占2个字节(Byte),英文1个字符在Unicode也是占2个字节(Byte),怎么办呢,占用空间多一倍,于是utf-8就出现了,utf-8能根据字符(UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节,如果文本基本都是英文,用utf8能节省很多空间)
_________________________________________________________________________________________________
字符串编码
# -*- coding:utf-8 -*- print(ord('A'),ord('詹'),chr(35449))
ord()就是找对应的编码数字,chr()就是找对应的解码字符
_________________________________________________________________________________________________
Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
# -*- coding:utf8 -*- #'ABC'以ascii编码成bytes,才能进行传输
print('ABC'.encode('ascii')) #b'ABC'以ascii解码成字符,我们才看得出是'ABC'
print(b'ABC'.decode('ascii')) #中文如果用ascii编码会出错,中文不在ascii表内,超出了范围,所以我们用utf8
print('我是中文'.encode('utf8'))
print(b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87'.decode('utf8'))
假设我故意把bytes故意改一下尾部去decode,会报错,但是可以忽略
# -*-coding:utf8 -*- #原bytes
print(b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87'.decode('utf8'))
#故意出错bytes(如果不加errors='ignore',会报错)
print(b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\xff'.decode('utf8', errors='ignore'))
计算字符串中的字符个数
# -*-coding:utf8 -*- print(len(""))
print(len("饕餮"))
计算字符串中的字节数量
# -*-coding:utf8 -*- print(len(b"")) #中文我要先encode编码我才bytes是什么,才能计算字节数量
print('饕餮'.encode('utf8'))
print(len(b'\xe9\xa5\x95\xe9\xa4\xae'))
Python中,采用的格式化方式和C语言是一致的,用%
实现
# -*-coding:utf8 -*- #格式化,%s中的s表示字符串,%d中的d表示整数,还有%f中的f表示浮点数,%x中的x表示十六进制的整数
say_somthing = 'Hi, %s, you have $%d.' % ('James', 1000000)
print(say_somthing)
还有一种格式代是format(),略过
python_字符编码&格式化的更多相关文章
- python_字符编码
一 了解字符编码的知识储备 1.计算机基础知识 2.电脑存放组成: 硬盘 - 内存 -(二级缓存.一级缓存.cpu寄存器)- cpu # cpu交互的是用户能识别的数据:字符# 硬盘中最终存储的数据: ...
- python - 字符编码/格式化/替换符
- python学习第四天 --字符编码 与格式化及其字符串切片
字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...
- Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助
Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助 目录 Pychar ...
- python大法好——变量、常量、input()、数据类型、字符串、格式化输出、运算符、流程控制语句、进制、字符编码
python基础知识 1.变量 变量:把程序运算的中间结果临时存到内存里,以备后面的代码可以继续调用. 作用:A.存储数据. B.标记数据. 变量的声明规则: A:变量名只能是字母,数字或下划线任意组 ...
- python格式化输出、逻辑表达式和字符编码
格式化输出: %s 字符串占位符;%d 整数占位符 注意:如果前面有了占位符,那么后面所有的%都是占位,如果要输出“%”,需要使用转移符,即"%%" #定义三个变量 name = ...
- python 字符编码、格式化
数据类型-布尔值一个布尔值只有True.False两种值,要么是True,要么是False 布尔值可以用and.or和not运算 空值是Python里一个特殊的值,用None表示 Python对b ...
- while循环语句、格式化输出、常用运算符、字符编码
1.while循环 while 空格 条件 冒号 缩进 循环体 num=1 while num<11: print(num) num=num+1 变量都是先执行等号右边的,然后执行等号左边的. ...
- while 格式化输出 运算符 字符编码
流程控制之while循环 条件循环:while,语法如下 while 条件: # 循环体 # 如果条件为真,那么循环体则执行,执行完毕后再次循环,重新判断条件... # 如果条件为假,那么循环体不执行 ...
随机推荐
- 从实验室走向世界:HSP90抑制剂,一种新的癌症药物
热休克蛋白90(HSP90)是细胞内一种普遍存在的.十分保守的以及有高度活性的蛋白质,它在肿瘤细胞内的含量要比正常细胞多.作为一种分子伴侣,HSP90协助不同种类的癌蛋白(即HSP90的服务蛋白)进行 ...
- K8S中如何跨namespace 访问服务?为什么ping不通ClusterIP?
1.K8S中如何跨namespace 访问服务? 2.在Pod中为什么ping不通ClusterIP? 简述: Rancher2.0中的一个用户,在K8S环境中,创建两个namespace,对应用进行 ...
- npm init 命令生成package.json文件
通过npm init 命令可以生成一个package.json文件.这个文件是 整个项目的描述文件.通过这个文件可以清楚的知道项目的包依赖关系,版本,作者等信息.每个NPM包都有自己的package. ...
- RabbitMQ(1) - win+rabbitMQ
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
- Vue mixins(混入)
建立一个公共组件,然后对该组件进行混入继承. 注意会走两个生命周期,谨慎使用 mixins混入,相当于生成new 组件:组件引用,相当与在父组件内开辟了一块单独的空间 mixins适用于,两个有非常相 ...
- 【Mybatis】【2】处理大于号小于号及其他特殊字符
正文: 问题:用<的时候会报错.因为是xml文件,会被识别成标签 解决方法: 原sql:SELECT * FROM TABLE T WHERE T.AGE < 10; 1,转义字符.用转义 ...
- vue中提示toFixed不是函数
vue中toFixed获取小数点后两位 错误提示:.toFixed is not a function解决办法:Number(_this.group_cash).toFixed(2) 转自:http ...
- 基于lnmp环境安装Discuz
安装环境 Linux:CentOS Linux release 7.5.1804 (Core) nginx:1.14.2 php-fpm:5.4.16 mariadb-server:5.5.60 基本 ...
- web app、hybrid app和native app区别
- javascript 跨域请求详细分析(终极跨域解决办法)
自从我接触前端以来,接手的项目里面很大部分都是前后端分离的,后端只提供接口,前端根据后端接口渲染出实际页面.个人觉得这是一个挺好的模式,前后端各自负责各自的模块,分工明确,而且也给前端更大的发挥空间. ...