pytho学习2 基础知识续

1、字符编号:

字符串是一种数据类型,它有一个编码的问题

字符编码的历史:

(1)计算机只处理数字,所以要处理文本必须将它转化为数字才能处理。8bit(比特)=1byte(字节),1byte能表示的最大整数为255=二进制11111111。2bytes=65535=二进制16个1;

(2)最早美国人发明计算机的时候,只有127个字符被编到计算机中表示英文大小写字母、数字和一些符号,这个编码被称为ASCII编码,1byte表示。如A的编码为65,z的编码为122;

(3)要处理中文,1byte不够,至少需要2bytes,还不能和ASCII码冲突,中国制定了GB2312编码,各国也制定了自己的标准,这样多种语言混一起就会有乱码;

(4)Unicode把所有语言统一到一套编码中,解决了多种语言在一起乱码的问题,通常是2bytes,也有4bytes;

(5)出问题了,如果是纯英文用Unicode编码会浪费一半的空间。本着节约的精神 ,UTF-8(可变长编码)出现,UTF-8把一个个Unicode字符根据不同的数字大小编码成1-6个字节,英文1个字节,汉字通常是3个字节,生僻字为4-6个字节。

字符ASCIIUnicodeUTF-8
A0100000100000000 0100000101000001
x01001110 0010110111100100 10111000 10101101
计算机系统通用的字符编码工作方式:

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


python中字符串编码:

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

ord()和chr()函数




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

Python对bytes类型的数据用带b前缀的单引号或双引号表示:


encode():

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

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

decode():

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:


如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:


len()函数:

计算 字符数:


计算字节数:


1个中文字符经过UTF-8编码后通常会占用3个字节(中文两个字符占6个字节,6/2=3),而1个英文字符只占用1个字节(ABC三个字符占3个字节3/3=1)。

格式化:%

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


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

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值