【Python学习笔记】字符串操作
字符串的表示
python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量.,如下:
s1='Hello world!' s2="Hello world!" s3=""" Hello world! I am Chinese! I love my country! """
为什么python要提供这三种形式的字符串呢?主要考虑以下方面:
1. 字符串多行的需要。""" """三引号形式的字符串可以跨行表示字符串,两个三引号之间的所有文本都被视为字符串的内容,而单引号''和“”只能表示单行的字符串。
2. 字符串字面值的表示。“” 和‘’的字符串可以使用‘\’来进行转移,而三引号字符串中的’\‘转义符则不起作用,所有包含在三引号中的字符串将保持字面值,不会进行转义。
3. 字符串嵌套的需要。如果单独只使用双引号(单引号)来表示字符串,则遇到字符串里面又包含一个双引号(单引号)的字符串的情况时无法正确表达,如“Hell0 "%s" ”则会被认为“Hell0 "即为一个字符串,这不是我们想要的。而如果我们混合使用单双引号来表示的话,则没有不出出现这种问题,如“Helo ‘%s’ ”.
4. 还有一点可能就是便利性了。单引号相对于双引号不需要shift键即可打出,相对来说还是可以省点时间。
Unicode字符串
Python中的字符串根据编码方式分为两种:普通字符串和Unicode字符串,Unicode字符串只是在字符串前加前缀字母u,如:
普通字符串: s1 = 'Hello world!' Unicode字符串 s1 = u'Hello world'
普通字符串就是8位的ASIIC字符串,而Unicode字符串是Unicode编码的字符串。注意在Python3中不需要加前缀字母u,因为Python3中的所有字符串都已经是Unicode编码。
注意:Python不支持单字符,所以在C语言中的char在Python中不存在。单字符在Python中也是个字符串。
字符串的序列操作
python的字符串类型是python的序列类型之一,所以python的字符串支持所有的序列类型操作, 假设下表中的s=‘Hello world'
操作 | 结果 | 实例 |
x in s
|
字符串s包含x返回True,否则返回False
|
"e" in s输出:True |
x not in s
|
字符串s不包含x返回False,否则返回True
|
"A" in s输出:True |
s + t
|
连接字符串s和t
|
s+",look"输出:“Hello world,look" |
s * n, n * s
|
复制n个s然后连接
|
s*2输出:”Hello worldHello world“ |
s[i]
|
字符串s的第i个字符
|
s[1]输出:”e“ |
s[i:j]
|
字符串s的i到j的切片
|
s[0:2]输出:”He“ |
s[i:j:k]
|
字符串s的i到j的步长为k的切片
|
s[0:10:2]输出:”Hlowr“ |
len(s)
|
返回字符串s的长度
|
len(s)输出:11 |
min(s)
|
字符串s中字符值最小的字符
|
min(s)输出:” “ |
max(s)
|
字符串s中字符值最大的字符
|
max(s)输出:”w“ |
s.index(x)
|
s中字符x的索引
|
s.index("o")输出:4 |
s.count(x)
|
s中x出现的次数
|
s.count("l")输出:3 |
字符串的内建函数
Python的字符串包含很多内建函数,同时Python的标准库中还有一个string模块。如果你查看string模块的源码你会发现,string模块中对于字符串的大多数操作只是对于字符串内建函数一种封装。Python字符串的所有内建函数都支持对Unicode字符串的操作,如果所操作的字符串是Unicode,则处理后返回的字符串还是Unicode。
Python字符串支持的内建函数如下: