一、字符串的不变性
1、属于不可变对象,不能通过索引操作来改变字符串对象本身
s = 'I like Python' s[7] = 'p'
要修改字符串,需要使用字符串的replace()方法,会产生新字符串!
s = 'I like Python' s1 = s.replace('P','p') s1
2、对字符串变量使用赋值操作后,该变量将指向一个新的字符串对象
s = 'I like Python' id(s) t = 'too' s+=t id(s)
注意:类似于+=、*=这样的复合赋值运算符对于可变对象和不可变对象的处理不同:
(1)对于列表等可变对象,+=赋值后,变量仍然指向原来的对象(即id(s)不变),但原来的对象改变了;
(2)对于数值、字符串等不可变对象,+=赋值后,变量将指向一个新对象(即id(s)改变) ,因为原来的对象不能被改变。
list1 = [1,2,3] list2 = ['a','b','c'] id(list1) list1 = list1 +list2 list1 id(list1) list1+=list2 list1 id(list1)
小结:对于不可变对象,s+=t与s=s+t的作用相同,而对于可变对象,两个操作的作用不同!
二、字符串的常见方法介绍
注意首字母大写方法capitalize()和title()的区别 :
s = 'my python' print(s.capitalize()) print(s.title())
capitalize()是将第一个单词的首字母大写;
title()是将每一个单词的首字母大写。
三、字符串对象的join()和split()方法
1、join():将字符串/元组/列表中的元素以指定的分隔符(sep)连接生成一个新的字符串;语法:'sep'.join(sequence)
2、split():通过指定分隔符对字符串进行分割,并返回分割后的字符串形成的列表对象;语法:str.split(str=“”, num=string.count(str)),其中str :分隔符,默认为所有的空白字符,包括空格、换行(\n)、制表符(\t)等。 num:分割次数。默认为 -1, 即分隔所有。
s1 = ['love','life,','love','Python!'] s2 = ' '.join(s1) s2 s3 = s2.split() s3 s4 = s2.split(',') s4
s5 = 'a\tb\n c\nd' s6 = s5.split() s6 s7 = ''.join(s5.split()) s7
四、删除空白的Istrip()和rstrip()方法
空白很重要,因为你经常需要比较两个字符串是否相同。一个重要的示例是,在用户登录网站时检查其用户名。不过在非常简单的情形下,额外的空格也可能令人迷惑。所幸,在 Python 中删除用户输人数据中的多余空白易如反掌。
Python 能够找出字符串开头和末尾多余的空白。要确保字符串未尾没有空白,可使用方法rstrip()。
str = 'python ' str str.rstrip() str
与变量 str 相关联的字符串末尾有多余的空白。在终端会话中向 Python 询问这个变量的值时,可看到末尾的空格。对变量 str 调用方法 rstrip()后,这个多余的空格被删除了。然而,这种删除只是暂时的,接下来再次询问 str 的值时,你会发现这个字符串与输人时一样,依然包含多余的空白。
要永久删除这个字符串中的空白,必须将删除操作的结果关联到变量:
str = 'python ' str = str.rstrip() str
为删除这个字符串中的空白,要将其末尾的空白剔除,再将结果关联到原来的变量。在编程中,经常需要修改变量的值,再将新值关联到原来的变量。这就是变量的值可能随程序的运行或用户输人数据而发生变化的原因所在。
你还可以剔除字符串开头的空白,或者同时剔除字符串两边的空白。为此,可分别使用方法lstrip()和strip():
str1 = ' python ' str1.rstrip() str1.lstrip() str1.strip()
在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串。接下来,分别删除末尾、开头和两边的空白。尝试使用这些剥除函数有助于你熟悉字符串操作。在实际程序中,这些剥除函数最常用于在存储用户输入前对其进行清理。