Python字符串和编码
其它编程语言
1. 常用编码:
- ASCII:每个字符占用一个字节,表示的字符较少
- GB2312:中国的字符编码标准,日本的是Shift_JIS,韩国的是Euc-kr,造成各个国家的编码不一致
- Unicode:两个字节或者四个字节(生僻字)表示一个字符,如果仅仅使用英文,Unicode占用的字节数太多了
- UTF-8:可变长编码的编码,使用1-6个字节表示字符,常用英文是1个字节,汉字一般是3个字节,生僻字可能使用4-6个字节
计算机内存中一般使用Unicode编码,当需要存到硬盘或者需要传输的时候,就需要转换为UTF-8编码
2. Python中的字符串
- Python诞生的比Unicode早,所以,最早的Python只支持ASCII编码
Python提供了ord()
和chr()
函数来转换字母和数字,例子:
- Python中的Unicode字符的表示方法:
u"字符内容"
- Python中Unicode和UTF-8编码的转换:
- 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码的时候需要指定保存为UTF-8编码,为了让它按照UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python
-*- coding: utf-8 -*-
第一行上是为告诉Linux/OS X系统, 这是一个Python可执行程序,Windows系统会忽略这个注释
第二行注释是为了告诉Python解释器,按照UTF-8的编码读取源代码,否则你在原代码中写的中文输出可能会有乱码
3. 字符串的格式化
Python的格式化字符串和C语言的一致,有多少个占位符,就要有多少个变量或者常量来替换这些占位符:
使用格式:`"占位符1,占位符2,占位符3" % (替换值1,替换值2,替换值3)`
%s 表示字符串
%d 表示整数
%f 表示浮点数
%x 表示十六进制整数
使用实例:
- 当只有一个占位符的时候,括号
()
可以被省略掉
- 当需要使用
%
的时候,需要对它进行转义:
注意,在Python 3中,u"xxx"和""表示的一生一世是一致的,默认是Unicode编码,如果需要使用字节形式表示字符串,需要在字符串前面加上字符b
:b"呵呵"