6.2 字符串

一.python字符串类的常用方法:                                                                                                 
返回类型函数名及参数说明示例
intlen(str)计算字符串的长度str = "abcdef",那么len(str)的值就是6
strstr[index]返回下标为index的字符是多少,下标从0开始str = "abcdef",那么str[0]的值就是'a'
boolstr1 == str2比较两个字符串的值是否相等str1 = "abcdef",str2 = "abcdef",那么str1 == str2的值就是True
boolstr1.lower() == str2.lower()忽略大小写,比较两个字符串的值是否相等str1 = "abcdef",str2 = "ABCDEF",那么str1.lower() == str2.lower()的值就是True
strstr.upper()把字符串里面所有的字母都变成大写(原字符串值不变)str = "abcdef12F",那么str.upper()的值就是"ABCDEF12F"
strstr.lower()把字符串里面所有的字母都变成小写(原字符串值不变)str = "ABCDEF12F",那么str.lower()的值就是"abcdef12f"
strstr.strip()把字符串前后的空格删掉,包括空格、tab字符,转行。(原字符串值不变)str = "abcdef  ",那么str.strip()的值就是"abcdef"
strstr[start:end]截取字符串,从下标start开始到下标end(不包括)结束。end参数可以省略,表示截取到末尾。(原字符串值不变)str = "abcdef12F",那么str[1:3]的值就是"bc",str[0:3]的值就是"abc",str[3:]的值就是"def12F"
intstr.find(substr)substr在字符串中第一次出现的下标。如果没有出现过,返回-1str = "abcdef12F",那么str.find("cd")的值就是2
intstr.rfind(substr)substr在字符串中最后一次出现的下标。如果没有出现过,返回-1str = "abcdefb2F",那么str.rfind("b")的值就是6
intstr.find(substr, start, end)substr在字符串中从下标start开始,第一次出现的下标。如果没有出现过,返回-1str = "abcedfceF",那么str.find("ce", 4)的值就是6
intstr.rfind(substr, start, end)substr在字符串中从下标start开始,最后一次出现的下标。如果没有出现过,返回-1str = "abcdefb2F",那么str.rfind("b", 0, 3)的值就是-1
strstr.replace(oldstr, newstr)把字符串中所有的oldstr替换成newstr。(原字符串值不变)str = "abceadfab2F",那么str.replace("a", "A")的值就是"AbceAdfAb2F",str.replace("a", "")表示删掉所有字符'a',计算结果是"bcedfb2F"
strstr1 + str2两个字符串前后相连str = "abceadfab2F",那么str = str + "3"后str的值就是"abceadfab2F3"
list[shr]list(str)将字符串拆成单个字符,存入一个列表(原字符串值不变)str = "abceadfab2F",那么list(str)得到的列表是['a','b','c','e','a','d','f','a','b','2','F']
list[str]str.split(substr)将字符串按照substr为分隔字分成一个列表,substr可以是正则表达式str = "abceadfab2F",那么str.split("a")得到的列表是["","bce","df","b2F"]
boolsubstr in str假如对象内容包含substr的值,那么返回True;否则返回Falsestr = "abceadfab2F",那么"ab" in str的值是True,"abd" in str的值是False
bool
isdigit()判断是否是数字str ="122334545",那么str.isdigit()的值是True,str ="122334545a",str.isdigit()的值是False
    下面是示例代码:
#字符串String类
#字符串里面的字符是不可变的,每次修改都会创建一个新的字符串
#定义字符串
str1 = "Hello, World!"
for c in str1:
   print(c)
#计算字符串长度
print(len(str1))
#返回下标为i的字符是多少,下标从0开始
print(str1[0])
#计算对象和str的内容是否一致,比较两个字符串的值是否相等不能使用==,只能使用本函数
str2 = "hello, world!"
print(str1 == str2)
#把字符串里面所有的字母都变成大写。(原字符串值不变)
print(str1.upper())
#把字符串里面所有的字母都变成小写。(原字符串值不变)
print(str1.lower())
#把字符串前后的空格删掉,包括空格、tab字符,转行。(原字符串值不变)
str3 = " hello, world! \t\n"
print(str3.strip())
#截取字符串,从下标start开始到下标end结束,其中包含start但不包含end。end参数可以没有,表示截取到末尾。(原字符串值不变)
print(str1[7:12])
#str在字符串中第一次出现的下标。如果没有出现过,返回-1
print(str1.find("World"))
#替换字符串中所有第一个字符串参数换为第二个字符串参数。(原字符串值不变)
str4 = "Hello, Bob!"
print(str4.replace("Bob""Alice"))
#两个字符串或数值前后相连
str5 = "Hello"
str6 = "World"
str7 = str5 + ", " + str6 + "!"
print(str7)
#将字符串按照str为分隔字分成一个数组,str可以是正则表达式
str8 = "apple, banana, cherry"
print(str8.split(", "))
#假如对象内容包含str的值,那么返回True;否则返回False
print("banana" in str8)
s = "1234"
print(s.isdigit()) # True
t = "1.2345"
print(t.isdigit()) # False

二.拼接
字符串还有一个很常用的方法用来拼接一段长字符串,我们可以这么拼接字符串:
class Student:
    name=""
    id=""
    clazz=""
    def __str__(self):
        return "姓名:"+self.name+",学号:"+self.id+",班级:"+self.clazz
第6行代码用+拼接固定字符串和变量,这样比较容易写少一个引号,特别是长字符串,于是可以用下面的方法:
n=1
max=8532
min=2358
a=max-min
print("第{}次计算,{}-{}={}".format(n,max,min,a))
#作为对比,下面是用+操作拼接的
print("第"+str(n)+"次计算,"+str(max)+"-"+str(min)+"="+str(a))
也就是花括号部分将由format函数的参数逐个代替,这样写只需要写一对引号,不容易写错。从对比中可以看到,用format拼接更不容易出错,而且不用把数值类型转换成字符串类型(不需要用str函数)

这是另一种占位符生成字符串的方法,它不需要format函数:
n=1
max=8532
min=2358
a=max-min
print(f"第{n}次计算,{max}-{min}={a}")
在字符串的最开头有一个小写字母f,然后这个字符串内部所有的花括号{}部分,都看成是变量,例如{n},这个n就需要先定义好,最后就生成整个字符串。在写SQL、HTML语句的时候,这样的写法非常方便。

三.重复
字符串除了+的拼接操作,还可以用*这样的操纵,*在字符串中的意义是重复:
k="ok"*5
print(k)
这样k的值就是5个"ok"