python数据类型--重点字符串
1、整数。没有大小限制。
2、浮点数。也没有大小限制,但是超出一定范围就直接表示为inf
(无限大)。
3、字符串。单引号'或双引号"括起来。转义字符\可以转义很多字符。r''表示''内部的字符串默认不转义。'''...'''表示多行内容。
4、布尔值 5、空值
6、可变有序列表list
7、不可变有序元组tuple
8、字典dict
9、集合set {,}
另外,关于字符串的编码ASCII、Unicode和UTF-8的关系:
1 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。
1 各国有各国的标准,在多语言混合的文本中,显示出来会有乱码。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
2
3 Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
4
5 现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
1 新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,
在存储和传输上就十分不划算。
2
3 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,
常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。
bytes类型的数据用带b前缀的单引号或双引号表示: x = b'ABC'
如果要在网络上传输,或者保存到磁盘上,就需要把以unicode表示的str通过encode()方法变为以字节为单位的bytes。如
1 >>> 'ABC'.encode('ascii')
2 b'ABC'
3
4 >>> '中文'.encode('utf-8')
5
6 b'\xe4\xb8\xad\xe6\x96\x87'
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
1 >>> b'ABC'.decode('ascii')
2
3 'ABC'
4
5 >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
6
7 '中文'
如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:
1 >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
2 '中'
len()函数可以计算str的字符数,也可以计算bytes的字节数:
1 >>> len('ABC')
2 3
3 >>> len('中文')
4 2
5 >>> len(b'ABC')
6 3
7 >>> len('中文'.encode('utf-8'))
8 6
9 >>>
# -*- coding: utf-8 -*-
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,%x表示十六进制,%f表示浮点数。有几个%?占位符,% () 后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
1 >>> 'Hello, %s' % 'world'
2 'Hello, world'
3 >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
4 'Hi, Michael, you have $1000000.'
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
1 >>> print('%.1f' % 3.1415926)
2 3.1
3 >>> print('%.3f' % 3.1415926)
4 3.142
可以看出,以上可以取四舍五入的近似值。
懒懒的小猪