6.8.8 Python的Unicode支持
1. 内建的unicode()函数
unicode的工厂方法,它接受一个string做参数,返回一个Unicode字符串。
2. 内建的decode()/encode()方法
decode()和encode()内建函数接受一个字符串做参数返回该字符串对应的解码后/编码后的字符串。decode()和encode()都可以应用在常规字符串和Unicode字符串。
3. Unicode类型
Unicode字符串对象是basestring的子类、用Unicode()工厂方法或直接在字符串前面加一个u或者U来创建实例。
4. Unicode序数
内建的unichr()函数返回一个对应的Unicode字符。
5. 强制类型转换
混合类型字符串操作需要把普通字符串转换成Unicode对象。
6. 异常
UnicodeError异常是在exceptions模块中定义的,ValueError的子类。
7. 标准编码
utf-8、utf-16
8. RE引擎对Unicode的支持
正则表达式引擎需要Unicode的支持。
9.字符串格式化操作符
如果格式化字符串是Unicode对象,所有参数都将首先强制转换成Unicode然后根据对应的格式串一起进行格式转换。数字首先被转换成普通字符串,然后在转换成Unicode。Python字符串通过默认编码格式转化成Unicode。
>>> u"12345%s78%d0"%("6", 9)
u'1234567890'
>>>
6.10 字符串关键点总结
1. 一些引号分隔的字符
可以用两种引号来创建字符串,好处是当你的字符串中包含单引号时,如果用单引号创建字符串,那么字符串就不需要转义,反之亦然。
2. 不可分字符类型
字符串是唯一的字面上的字符序列类型,字符本身并不是一种类型,字符串是字符存储操作的最基本单位。字符应该被视为长度为1的字符串。
3. 字符串格式化操作符(%)提供类似printf()的功能。
4. 三引号
在三引号字符串中可以包含诸如回车或者tab键这样的特殊字符。
5. 原始字符串对每个特殊字符串都使用它的原意(r/R)
6. Python字符串不是用过NUL或者‘\0’来结束的。
Python为你自动管理内存。
6.11 列表
列表与元组的区别:元组是不可变的,或者说是只读的。
1. 如何创建列表类型数据并给它赋值。
>>> [1,2,3,"45",[6,'7'],8]
[1, 2, 3, '45', [6, '7'], 8]
>>> list("123")
['1', '2', '3']
>>> list()
[]
>>> []
[]
>>>
2. 如何访问列表中的值。
列表的切片操作就像字符串中的一样。
>>> aList=[1,2,3,'45', [6,"7"],9]
>>> aList[1]
2
>>> aList[:4]
[1, 2, 3, '45']
>>> aList[4:5]
[[6, '7']]
>>> aList[4][1]
'7'
>>>
3. 如何更新列表
可以通过在等号的左边指定一个索引或者索引范围的方式来更新一个或几个元素,也可以用append()方法追加元素到列表中去。
>>> aList=[1,2,3,'45', [6,"7"],9]
>>> aList.append((1,2,3))
>>> aList
[1, 2, 3, '45', [6, '7'], 9, (1, 2, 3)]
>>> aList[2]=[]
>>> aList
[1, 2, [], '45', [6, '7'], 9, (1, 2, 3)]
>>>
4. 如何删除列表中的元素或者列表(本身)
要删除列表中的元素,如果确切知道要删除元素的索引可以用del语句,否则可以用remove()方法。
如果想明确删除一整个列表,可以用del语句。
>>> aList
[1, 2, [], '45', [6, '7'], 9, (1, 2, 3)]
>>> del aList[1]
>>> aList
[1, [], '45', [6, '7'], 9, (1, 2, 3)]
>>> aList.remove("45")
>>> aList
[1, [], [6, '7'], 9, (1, 2, 3)]
>>> del aList
>>> aList
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
NameError: name 'aList' is not defined
>>>
6.12 操作符
6.12.1 标准类型操作符
6.12.2 序列类型操作符
1. 切片([]和[:])
2. 成员关系操作(in,not in)
3. 连接操作符(+)
连接操作符允许我们把多个列表对象合并在一起。注意,列表类型的连接操作也只能在同类型之间进行。extend()方法比连接操作的一个优点是它实际上是把新列表添加到了原有的列表里面,而不是像连接操作那样新建一个列表。
连接操作符并不能实现向列表中添加新元素的操作。
>>> list1 = [1, 2, '3' ]
>>> list2 = [4, 5, '6' ]
>>> list1 + list2
[1, 2, '3', 4, 5, '6']
>>>
4. 重复操作符(*)
重复操作符可能更多地应用在字符串类型中,不过,列表和元组跟字符串同属序列类型,所以需要的时候也可以使用这一操作。
>>> list1 * 3
[1, 2, '3', 1, 2, '3', 1, 2, '3']
>>>
6.12.3 列表类型操作符和列表解析
列表解析结合了列表的方括弧和for循环,在逻辑上描述要创建的列表的内容。
>>> [j for j in range(10) if j%2==0]
[0, 2, 4, 6, 8]
>>>