- ASCII
- American Standard Code for Information Interchange,美国标准信息交换代码,
- 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号
- American Standard Code for Information Interchange,美国标准信息交换代码,
- GB2312
- 为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5
- GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号
- 1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准
- 现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312
- 有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码
- Unicode
- 统一码、万国码、单一码
- 为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536
- UTF-8
- 是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存
- py2是默认的ASCII编码,所以默认的在头部声明编码格式为utf-8以支持中文等字符
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
- unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
- 在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
- 统一码、万国码、单一码
- 字符串
- 格式化输出
- Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符
print("I'm %s. I'm %d year old" % ('Vamei', 99))
- 格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型
%s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制整数 %x 十六进制整数 %e 指数 (基底写为e) %E 指数 (基底写为E) %f 浮点数 %F 浮点数,与上相同 %g 指数(e)或浮点数 (根据显示长度) %G 指数(E)或浮点数 (根据显示长度) %% 字符"%"
-
语法模板
'''
%[(name)][flags][width].[precision]typecode
(name)为命名
flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。
width表示显示宽度
precision表示小数点后精度
'''
print("%+10x" % 10)
print("%04d" % 5)
print("%6.3f" % 2.3)
#Python实际上用4来替换*。所以实际的模板为"%.4f"
print("%.*f" % (4, 1.2))
#在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X")
num = 100print "%d to hex is %x" %(num, num) print "%d to hex is %X" %(num, num) print "%d to hex is %#x" %(num, num) print "%d to hex is %#X" %(num, num)
-
- Python2.6开始,新增了一种格式化字符串的函数str.format(),通过这个函数同样可以对字符串进行格式化处理。在format()函数中,使用“{}”符号来当作格式化操作符
# 位置参数 print "{0} is {1} years old".format("Wilber", 28) print "{} is {} years old".format("Wilber", 28) print "Hi, {0}! {0} is {1} years old".format("Wilber", 28) # 关键字参数 print "{name} is {age} years old".format(name = "Wilber", age = 28) # 下标参数 li = ["Wilber", 28] print "{0[0]} is {0[1]} years old".format(li) # 填充与对齐 # ^、<、>分别是居中、左对齐、右对齐,后面带宽度 # :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充 print '{:>8}'.format('3.14') print '{:<8}'.format('3.14') print '{:^8}'.format('3.14') print '{:0>8}'.format('3.14') print '{:a>8}'.format('3.14') # 浮点数精度 print '{:.4f}'.format(3.1415926) print '{:0>10.4f}'.format(3.1415926) # 进制 # b、d、o、x分别是二进制、十进制、八进制、十六进制 print '{:b}'.format(11) print '{:d}'.format(11) print '{:o}'.format(11) print '{:x}'.format(11) print '{:#x}'.format(11) print '{:#X}'.format(11) # 千位分隔符 print '{:,}'.format(15700000000)
- Python2.6开始,新增了一种格式化字符串的函数str.format(),通过这个函数同样可以对字符串进行格式化处理。在format()函数中,使用“{}”符号来当作格式化操作符
- Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符
- 格式化输出