首页 > Python > 正文

Python(3)字符和编码

标签:python

廖雪峰 Python3 在线课程 – 字符和编码

最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。

处理中文至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。

Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。最常用的是用两个字节表示一个字符.

ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器

Python的字符串

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言

Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

ord('A')
65
chr(66)
'B'
chr(25991)
'文'

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

在bytes中,无法显示为ASCII字符的字节,用\x##显示。

要把bytes变为str,就需要用decode()方法.

要计算str包含多少个字符,可以用len()函数:

len('ABC')
3

len('中文?)
2

格式化

%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。

常见的占位符有:

占位符	替换内容
%d	整数
%f	浮点数
%s	字符串
%x	十六进制整数

有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:

>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

format()

另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('john', 17.125)
'Hello, john, 成绩提升了 17.1%'

原创文章,转载请注明出处!
本文链接:moonbrillante.github.io/posts/python3.html
上篇: Jupyter Notebook 右键失效
下篇: 散列表