2.4.5字符串操作
1.字符索引
字符串对象定义为字符序列, 字符在字符串中的位置称为 “索引”,在 Python 和其他程序话
言中,序列中索引的第一个值为0,使用索引运算符“[ ]”査看字符串序列中的单个字符。字符
串的索引位置从0开始,直至字符串长度值减去1。但是使用负索引位置也是可能的,此时的计数方式是从最后一个字符到第一个字符。如图所示。
字符 H e l L o P y t h o n
索引 0 1 2 3 4 5 6 7 8 9 10 11
-12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
helloString=“Hello Python”"
helloString
‘Hello Python’helloString[0]
‘H’helloString[5]
’ ‘helloString[-1]
‘n’hellostring[12] #该学符串的最大索引位置为11,12超出字符串的最大索引位置
Traceback(most recent call last):
File “<pyshell#12>”, line 1, in
hellostring[12]
IndexError: string index out of range
2.连接符和操作符
字符串可以利用一些整数和浮点数所使用的二进制运算符,+和*运算符可以和字符串对象一起使用,但含义与整数和浮点数对象一起使用时不同。
+:连接符。+运算符需要两个字符串对象,连接起来得到一个新的字符串对象。
*: 重复符。*运算符需要一个字符串对象和一个整数, 新的字符串由原字符串复制而成, 复
制的次数为给出的整数值。
例如:
!
mystr=“Hello”
yourstr=“Python”
mystr+yourstr
‘HelloPython’mystr*3
‘HelloHelloHello’3*mystr
‘HelloHelloHello’mystr
‘Hello’
+运算符和*运算符都产生了新的字符串对象,但都不会影响表达式中的字符串。
执行连接操作时,除非明确指出,否则在第一个字符串的末尾和第二个字符串开头位置之间没有空格。
·执行连接操作时,两个字符串对象的顺序是,第一个字符串显示在新的字符串对缘的开始,第二个字符串在第一个字符串结束时开始。若更改顺序, 则新的字符串对象中的顺序也发生改变。
每个运算符所需要的操作对象的类型是特定的。对于连接操作,需要两个字符串对象。而复制操作, 只需要一个字符串和一个整数, 其他任何类型的组合都不能正常运行.
当出现“+”运算符时,操作数的类型确定将要执行的运算类型。如果操作数是数字,解释器将执行加法运算。 如果操作数是字符串, 则解释器执行连接操作。 如果操作数是数字和字符的混合, Python解释器将提示错误。 Python 能够动态地对变量关联的对象类型进行检查。 采用这种方法,一旦解释器得到了操作数的类型,它能够决定应该执行何种操作,也就是它能够判断哪些操作是可以执行的,哪些操作是不可以执行的。如果给出的Python运算符所带的操作数类型不能进行何种运算, 则会报错。
一般而言,将单个运算符执行多种操作的情况称为运算符重载.通过重载,能够让单个运算符根据不同的操作数执行不同的操作。
3.in运算符
in 运算符用于检查集合的成员, 当测试字符串包含在字符串时, 结果返回 True, 否则返回False, 如下所示。
mystr=“abcd”
‘a’ in mystr
True'e’in mystr
False
4.不可变性
字符串是一种集合,可以进行下述操作:创建字符串,更换字符串中的某个特定字符。在Python中,执行以下操作。
strings=‘hello’
strings[0]=‘a’
Traceback (most recent call last):
File “<pyshell#1>”, line 1, in
strings[0]=‘a’
TypeError:'str’object does not support item assignment
对象一旦创建,其内容就不能再修改。赋值语句的左侧通过索引表达式试图改变字符串中的字母,而字符串类型是不允许进行此操作。不能通过对其某一位置进行赋值而改变字符串,但是可以通过建立一个新的字符串并以同一个变量名对其进行赋值。如下所示:
strings=‘hello’
strings=‘s’+strings[1:]
strings
‘sello’
2.4.6 字符串与控制语句
Python 中的控制语句主要有条件判断 if, while, for语句, 还有与之搭配的 else. elif,break,continue,pass语句,本节通过一些代码来对字符串进行操作。
结合字符串长度和range 函数, 显示出所有单词中每个字符的索引,代码如下。
aString=“information”
len(aString)
11for x in range(len(aString)):
print(x,end=")
0 1 2 3 4 5 6 7 8 9 10for x in range(len(aString)):
print(aString[x],end=")
i n f o r m a t i o n
字符串中的每个索引及与该索引相关的字符都可以通过 for 语句查询出来。