6.2 字符串
一.python字符串类的常用方法:
返回类型 | 函数名及参数 | 说明 | 示例 |
---|---|---|---|
int | len(str) | 计算字符串的长度 | str = "abcdef",那么len(str)的值就是6 |
str | str[index] | 返回下标为index的字符是多少,下标从0开始 | str = "abcdef",那么str[0]的值就是'a' |
bool | str1 == str2 | 比较两个字符串的值是否相等 | str1 = "abcdef",str2 = "abcdef",那么str1 == str2的值就是True |
bool | str1.lower() == str2.lower() | 忽略大小写,比较两个字符串的值是否相等 | str1 = "abcdef",str2 = "ABCDEF",那么str1.lower() == str2.lower()的值就是True |
str | str.upper() | 把字符串里面所有的字母都变成大写(原字符串值不变) | str = "abcdef12F",那么str.upper()的值就是"ABCDEF12F" |
str | str.lower() | 把字符串里面所有的字母都变成小写(原字符串值不变) | str = "ABCDEF12F",那么str.lower()的值就是"abcdef12f" |
str | str.strip() | 把字符串前后的空格删掉,包括空格、tab字符,转行。(原字符串值不变) | str = "abcdef ",那么str.strip()的值就是"abcdef" |
str | str[start:end] | 截取字符串,从下标start开始到下标end(不包括)结束。end参数可以省略,表示截取到末尾。(原字符串值不变) | str = "abcdef12F",那么str[1:3]的值就是"bc",str[0:3]的值就是"abc",str[3:]的值就是"def12F" |
int | str.find(substr) | substr在字符串中第一次出现的下标。如果没有出现过,返回-1 | str = "abcdef12F",那么str.find("cd")的值就是2 |
int | str.rfind(substr) | substr在字符串中最后一次出现的下标。如果没有出现过,返回-1 | str = "abcdefb2F",那么str.rfind("b")的值就是6 |
int | str.find(substr, start, end) | substr在字符串中从下标start开始,第一次出现的下标。如果没有出现过,返回-1 | str = "abcedfceF",那么str.find("ce", 4)的值就是6 |
int | str.rfind(substr, start, end) | substr在字符串中从下标start开始,最后一次出现的下标。如果没有出现过,返回-1 | str = "abcdefb2F",那么str.rfind("b", 0, 3)的值就是-1 |
str | str.replace(oldstr, newstr) | 把字符串中所有的oldstr替换成newstr。(原字符串值不变) | str = "abceadfab2F",那么str.replace("a", "A")的值就是"AbceAdfAb2F",str.replace("a", "")表示删掉所有字符'a',计算结果是"bcedfb2F" |
str | str1 + 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"] |
bool | substr in str | 假如对象内容包含substr的值,那么返回True;否则返回False | str = "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在字符串中第一次出现的下标。如果没有出现过,返回-1print(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;否则返回Falseprint("banana" in str8)s = "1234"print(s.isdigit()) # Truet = "1.2345"print(t.isdigit()) # False
二.拼接
字符串还有一个很常用的方法用来拼接一段长字符串,我们可以这么拼接字符串:
class Student: name="" id="" clazz="" def __str__(self): return "姓名:"+self.name+",学号:"+self.id+",班级:"+self.clazz
第6行代码用+拼接固定字符串和变量,这样比较容易写少一个引号,特别是长字符串,于是可以用下面的方法:
n=1max=8532min=2358a=max-minprint("第{}次计算,{}-{}={}".format(n,max,min,a))#作为对比,下面是用+操作拼接的print("第"+str(n)+"次计算,"+str(max)+"-"+str(min)+"="+str(a))
也就是花括号部分将由format函数的参数逐个代替,这样写只需要写一对引号,不容易写错。从对比中可以看到,用format拼接更不容易出错,而且不用把数值类型转换成字符串类型(不需要用str函数)
这是另一种占位符生成字符串的方法,它不需要format函数:
n=1max=8532min=2358a=max-minprint(f"第{n}次计算,{max}-{min}={a}")
在字符串的最开头有一个小写字母f,然后这个字符串内部所有的花括号{}部分,都看成是变量,例如{n},这个n就需要先定义好,最后就生成整个字符串。在写SQL、HTML语句的时候,这样的写法非常方便。
三.重复
字符串除了+的拼接操作,还可以用*这样的操纵,*在字符串中的意义是重复:
k="ok"*5print(k)
这样k的值就是5个"ok"