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表示保留的位数 即两位

 

posted @ 2018-10-16 11:02  Attacki  阅读(369)  评论(0)    收藏  举报