python数据类型--重点字符串

1、整数。没有大小限制。

2、浮点数。也没有大小限制,但是超出一定范围就直接表示为inf(无限大)

3、字符串。单引号'或双引号"括起来。转义字符\可以转义很多字符。r''表示''内部的字符串默认不转义。'''...'''表示多行内容。

4、布尔值  5、空值   

6、可变有序列表list      [1,'a',False,[0.2,'toy']]      ==> 类似其他语言里的数组概念。

7、不可变有序元组tuple    (1,'a',False,[0.2,'toy'])

8、字典dict     {'Michael': 95, 'Bob': 75, 'Tracy': 85}      ==> 类似其他语言里的map概念.         dict的key必须是不可变对象.

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

可以看出,以上可以取四舍五入的近似值。

 

posted @ 2019-05-30 16:02  懒懒的小猪  阅读(201)  评论(0编辑  收藏  举报