一、Python 2 和Python 3 最大的区别就是字符串
- Python 2 中的字符串是byte的有序序列
- Python 3 中的字符串是unicode的有序序列
- 字符串是不可变的
- 字符串支持下标和切片操作
可以将字符串理解成一个元组,切片操作与元组类似
二、字符串是一种线性结构
s = 'string'
字符串的下标操作,可迭代操作以及切片操作,都能体现其线性结构
字符串是不可变的(s[1] = '_',会报错,说明字符串不可变)
元组也是不能修改的,同样也是不可变线性结构
三、字符串的格式化(支持两种方式)
- print style format (使用%作为格式化符号)
'I love %s' % ('Python', )
>> I love python
模板 + % + 元组填充元素(当元组只有一个元素的时候,要加逗号)
'I love %(key)s' % {'key': 'Python'}
>> I love python
也可以使用字典填充,可避免重复元素的冲突以及方便指定填充值
'I love %(name)s,%(name)s is my first lang.' % {'name': 'Python'}
>> I love python, Python is my first lang.
- format 方法 (Python 3 中常用的方法)
使用格式:template.format(args, kwargs)
1、template使用{}标注变量
2、{}或者{\d+}使用args按照顺序依次填充
3、{key}使用kwargs按照key填充
4、format方法功能很强大,几乎算是一种模板语言,具体使用参照Python官方文档
四、字符串的常用操作
- 字符串连接
- 字符串分割
- 字符串修改
1、大小写转换
2、填充、清除 - 字符串判断
- 字符串查找及替换
五、String与 Bytes
- Python3严格区分了文本和二进制数据,Python2中没有严格区分,经常导致编码错误
- 文本数据使用string类型、底层实现是unicode
- 二进制数据使用bytes类型,底层是byte
- string使用encode方法转换为bytes
- bytes使用decode方法转化为string
- 由于清晰的区分文本和二进制,Python3解决了大多数Python2的编码问题