Python之字符串与编码
2018-01-08 本文已影响0人
射手再见蓝天575
字符编码
- 几个常见国家的字符编码:
美国:
ASCII
(一个英文字符占1个byte
)
中国:GB2312
(一个中文字符占2个byte
)
日本:shift_JIS
韩国:Eur_kr
- 统一字符编码:
Unicode
Unicode解决了多种语言编码冲突的问题,但是一个英文字母占2个
byte
- 可变长编码:
UTF-8
UTF-8
在Unicode
的基础上节省了空间,英文字母1个byte
而中文字母2个byte
Python的字符编码
python 用的是`Unicode`编码,也就是说,Python的字符串支持多语言
字符 与编码的转换函数:ord()、chr()
- 字符转换成编码:
ord()
>>> ord('m') 109 >>> ord('M') 77 >>> ord('A') 65 >>> ord('a') 97
- 编码转换成字符:
chr()
>>> chr(65) 'A' >>> chr(3000) 'ஸ' >>> chr(3) '\x03' >>> chr(93) ']' >>> chr(96) '`' >>> chr(94) '^'
字符串与bytes
的转换函数:encode()、decode()
-
bytes
的表示:abc的
bytes
表示为:b'abc'
- 字符转化成
bytes
:encode()
>>> 'string'.encode('ascii') b'string' >>> 'string'.encode('utf-8') b'string' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> '中文'.encode('gb2312') b'\xd6\xd0\xce\xc4'
-
bytes
转换成字符串:decode()
>>> b'abc'.decode('ascii') 'abc' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'
- 当出现无法解码错误时,可以这样:
>>> b'\xe4\xb8\xad\xff'.decode('utf-8',errors='ignore') '中'
- 当出现无法解码错误时,可以这样:
- 字符/字节长度函数:
len()
>>> len(b'ABC') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文') 2 >>> len('中文'.encode('utf-8')) 6
*注意:
' '
与" "
在上述函数中等效,当'''
或"""
时是多行输入,即'
和"
不能引入本身!例如:
>>> '''.encode('gb2312')
...
...
>>> "'".encode('gb2312')
b"'
python的格式化输出
- C语言类型的格式化输出:
>>> print('''这是整型:%d,%2d,%02d;
... 这是浮点型:%f--%.2f--%.3f%%''' %(45,4,3,3.13,3.123455,56.0))
这是整型:45, 4,03;
这是浮点型:3.130000--3.12--56.000%
>>>
- format输出:
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成绩提升了 17.1%'
python源文件常用编码设置
- 源文件开头声明:
#!/usr/bin/env python3 # -*-coding: utf-8 -*-
- 文本编辑器设置:
Encoding
设置为:Encode in UTF-8 without BOM
一点好玩的东西^_^
在python中输入:
>>> print(chr(9997))
✍
>>> print(chr(9996))
✌
>>> print(chr(9995))
✋
>>> print(chr(9993))
✉
>>> chr(9993)
'✉'
好玩吧^_^