码迷,mamicode.com
首页 > 编程语言 > 详细

python_字符编码&格式化

时间:2019-03-14 18:15:29      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:韩国   占用   col   格式化   怎么   ignore   整数   个数   假设   

电脑最小储存单位是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

 1 # -*- coding:utf8 -*-
 2 
 3 #‘ABC‘以ascii编码成bytes,才能进行传输
 4 print(ABC.encode(ascii))
 5 
 6 #b‘ABC‘以ascii解码成字符,我们才看得出是‘ABC‘
 7 print(bABC.decode(ascii))
 8 
 9 #中文如果用ascii编码会出错,中文不在ascii表内,超出了范围,所以我们用utf8
10 print(我是中文.encode(utf8))
11 print(b\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87.decode(utf8))

假设我故意把bytes故意改一下尾部去decode,会报错,但是可以忽略

1 # -*-coding:utf8 -*-
2 
3 #原bytes
4 print(b\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87.decode(utf8))
5 #故意出错bytes(如果不加errors=‘ignore‘,会报错)
6 print(b\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\xff.decode(utf8, errors=ignore))

计算字符串中的字符个数

# -*-coding:utf8 -*-

print(len("12345678"))
print(len("饕餮"))

计算字符串中的字节数量

# -*-coding:utf8 -*-

print(len(b"12345678"))

#中文我要先encode编码我才bytes是什么,才能计算字节数量
print(饕餮.encode(utf8))
print(len(b\xe9\xa5\x95\xe9\xa4\xae))

Python中,采用的格式化方式和C语言是一致的,用%实现

1 # -*-coding:utf8 -*-
2 
3 #格式化,%s中的s表示字符串,%d中的d表示整数,还有%f中的f表示浮点数,%x中的x表示十六进制的整数
4 say_somthing = Hi, %s, you have $%d. % (James, 1000000)
5 print(say_somthing)

还有一种格式代是format(),略过

python_字符编码&格式化

标签:韩国   占用   col   格式化   怎么   ignore   整数   个数   假设   

原文地址:https://www.cnblogs.com/iamjames/p/10531869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!