字符串的表示方法
基本表示方法
字符串有多种形式,可以使用单引号('...'),双引号("...")都可以获得同样的结果。反斜杠 \ 可以用来转义:
print('"Isn\'t," they said.')
如果你不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即可:
print(r'C:\some\name')
字符串字面值可以跨行连续输入。一种方式是用三重引号:"""...""" 或 '''...'''。字符串中的回车换行会自动包含到字符串中,如果不想包含,在行尾添加一个 \ 即可。如下例:
print("""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
""")
将产生如下输出(注意最开始的换行没有包括进来):
字符串可以用 + 进行连接(粘到一起),也可以用 * 进行重复:
print( 3 * 'un' + 'ium')
字符串索引
字符串是可以被 索引 (下标访问)的,第一个字符索引是 0。单个字符并没有特殊的类型,只是一个长度为一的字符串:
word = 'Python'
print(word[0])
print(word[5])
索引也可以用负数,这种会从右边开始数:
print(word[-5])
print(word[-4])
print(word[-3])
注意 -0 和 0 是一样的,所以负数索引从 -1 开始。
字符串的切片表示
除了索引,字符串还支持切片。索引可以得到单个字符,而 切片 可以获取子字符串:
print(word[0:2])
print(word[2:5])
注意切片的开始总是被包括在结果中,而结束不被包括(半开半闭)。这使得 s[:i] + s[i:] 总是等于 s
print(word[:2]+word[2:])
print(word[:3]+word[3:])
切片的索引有默认值;省略开始索引时默认为0,省略结束索引时默认为到字符串的结束:
print(word[:2])
print(word[3:])
print(word[-2:])
也可以这么理解切片:将索引视作指向字符之间,第一个字符的左侧标为0,最后一个字符的右侧标为 n ,其中 n 是字符串长度。例如:
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
第一行数标注了字符串 0...6 的索引的位置,第二行标注了对应的负的索引。那么从 i 到 j 的切片就包括了标有 i 和 j 的位置之间的所有字符。
对于使用非负索引的切片,如果索引不越界,那么得到的切片长度就是起止索引之差。例如, word[1:3] 的长度为2。
试图使用过大的索引会产生一个错误:
但是,切片中的越界索引会被自动处理:
print(word[4:52])
print(word[45:])
字符串不能被修改,是 immutable 的。
向字符串的某个索引位置赋值会产生一个错误:
word[0]='J'
word[2:]='py'
如果需要一个不同的字符串,应当新建一个:
print('J'+word[2:])
print(word[2:]+'py')
内建函数 len() 返回一个字符串的长度:
s='jfkhferhgergerugsjfbjha'
print(len(s))