python的字符串和编码
字符编码
作为备忘,因为经常看了字符编码,却在真的需要理解时,还是不理解。
计算机只能处理数字,所以对于字符,需要转换为数字,才能继续进行处理。
- 最早的计算机在设计时采用 8个比特(bit)作为一个字节(byte)
- 一个字节能表示的最大的整数就是255(二进制11111111=十进制255)
ASCII编码和Unicode编码的区别:
- ASCII编码是1个字节,而Unicode编码通常是2个字节。
- 字母 A 用ASCII编码是十进制的 65 , 二进制的ASCII编码是 01000001 ;
- 如果把A 用Unicode编码,只需要在前面补0就可以, A 的Unicode编码是 00000000 01000001 。
- 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
如果 .py 文件本身使用UTF-8编码,并且也申明了 # -*- coding: utf-8 -*- ,打开命令提示符测试就可以正常显示中文
Python提供了 ord() 函数获取字符的整数表示, chr() 函数把编码转换为对应的字符:
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文
以Unicode表示的 str 通过 encode() 方法可以编码为指定的 bytes。
如果我们从网络或磁盘上读取了字节流,那么读到的数据就是 bytes 。要把 bytes 变为 str,就需要用 decode() 方法。
len() 函数计算的是 str 的字符数,如果换成 bytes , len() 函数就计算字节数
% 运算符就是用来格式化字符串的。在字符串内部, %s 表示用字符串替换, %d 表示用整数替换, %f表示用浮点数替换, %x表示用十六进制替换。
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
%运算符后面可以跟修饰符
格式化整数和浮点数还可以指定是否补0和整数与小数的位数: >>> '%2d-%02d' % (3, 1) '3-01' >>> '%.2d-%06d' % (3, 1) '03-000001' >>> '%.2f' % 3.1415926 '3.14' #第一个%后面的2 表示小数点后保留两位 #第二个%后面的可以跟 '0'或者'' 表示重复0还是空格 然后紧跟着2表示保留的位数 即两位

浙公网安备 33010602011771号