字符串的创建
str1 = "hello world"
str2 = 'hello'
格式化字符串
- 字符串拼接(字符串不能和其他类型拼接)
- " + "拼接
str1 = "abc"
str2 = "ef"
res = str1 + str2
print(res)
str1 = 123
str2 = "ab"
print(str1 + str2)
- 格式化字符串:
str1 = "hello"
str2 = "world"
print(f"{str1}{str2}")
print(f"res = {str1} {str2}")
- %s:表示任意字符串
print("hello %s" %'world')
print("a = %s" %"123")
print("a = ", 10)
image.png
- format()函数:‘{}’.format()
#指定位置赋值
a = "{var2} {var1}".format(var1 = "123", var2 = "zmm")
print(a)
image.png
字符串常用的方法
方法名 | 作用 | 返回值 |
---|---|---|
capitalize() | 将字符串第一个字符转成大写 | 转换后的字符串 |
center(width, char) | 返回以char填充的width居中的字符串,填充在字符串的左右,加上填充的字符,总字符串长度为width | 填充后的字符串:String的len是奇数,会向最右边添加,偶数反之,width小于 len时,返回原始字符串 |
ljust(width, char) | 用char来填充字符串,填充width个字符 | 返回新的字符串,若width小于等于原字符串长度,则返回原字符串 |
[count(var, beg= 0,end=len(string)) | 统计var在str中出现的次数 | 次数 |
upper() | 将字符串转成大写 | 转化之后的字符串 |
lower() | 字符串转小写 | 转后的字符串 |
isupper() | 判断字符串是否是大写 | False or True |
islower() | 判断字符串是否为小写 | False or True |
isdigit() | 判断字符串是否是数字字符串 | False or True |
len(str) | 计算字符串的长度 | 长度 |
split(var1,width) | 以var1将字符串切分成width+1个 | 字符串数组 |
rsplit(var1, width) | 从右往左用var1将字符串分成width+1个 | 返回字符串数组 |
spiltlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,若keepends为True,则保留符号,反之不保留 | 返回字符串数组 |
strip(var) | 删除字符串左右空格,或者指定var,默认(var不填时)删除空格 | 新的字符串 |
rstrip(var) | 删除字符串最右边空格,或者指定字符var,var不填时默认删除空格 | 返回新的字符串 |
lstrip(var) | 删除字符串最左边空格,或者指定字符var,默认删除空格 | 返回新的字符串 |
replace(old, new,替换次数) | 用new来替换old,替换指定次数次 | 返回替换后的新字符串 |
startswith(substring, start, end) | 检查字符串是否以指定字符开头 | True or False |
endswith(substring, start,end) | 检查字符串是否以指定字符结尾 | Ture or False |
find(var, start,end) | 在字符串中查找指定var | 返回str所在的下标,反之,返回-1 |
rfind(var, start, end) | 从右往左查指定var | 返回下标,反正,返回-1 |
index(str, start,end) | 在字符串中查找指定str | 返回所在的下标,反之,报异常 |
encode(encoding = "utf-8",error = "strict") | 指定字符串以utf-8的编码方式,编码,默认报error:ValueError | 返回具体的编码值 |
bytes.decode(encoding="UTF-8", error = "strict") | 指定以utf-8方式解码,默认报ValueError异常 | 返回具体的解码结果 |
expandtabs(tabsize=8) | 把字符串中的tab制表符转换成空格,默认是转化个数是8 | 返回转换后的字符串 |
isalpha() | 判断字符串中所有的字符是否是字母或者汉字 | True or False |
isalnum() | 判断字符串中所有的字符是否是字母或者数字 | True or False |
isnumeric() | 判断字符串是否全是数字 | True or False |
isspace() | 判断字符串是否全是空格组成 | True or False |
istitle() | 判断字符串中所有单词的首字母是不是大写 | True or False |
title() | 把字符串转成title格式 | 返回转化后的字符串 |
isdecimal() | 判断字符串是否只包含十进制数字 | True or Fasle |
- center(width, char):返回一个指定的宽度 width 居中的字符串,char 为填充的字符,默认为空格
"""
center(width,char):返回以char填充的width居中的字符串,填充在字符串的左右,加上填充的字符,总字符串长度为width
width宽度值小于等于字符串的len时,返回字符串
String的len是奇数,会向最右边添加,偶数反之
"""
print("zmm".center(1, "1"))
print("zmm".center(4, "*"))
print("zm".center(3, "0"))
print("zmm".center(5, "*"))
image.png
- ljust(width, char):用width个char在str后边填充,若width小于等于len(str)则返回原字符串,反之返回新字符串
str1 = "hello"
print(str1.ljust(1, "*"))
print(str1.ljust(5, "m"))
print(str1.ljust(7, "-"))
- zifll(width):默认以0在str的前边填充,返回总长度为width的字符串,若width小于len(str),则返回原字符串
str2 = "hello,zmm"
print(str2.zfill(10))
print(str2.zfill(5))
- count():计算某个字符在字符串中出现的次数
print("AMMM".count("M"))
print("zammma".count('a', 0, 3))
- upper():字符串大写转成小写
print("big".upper())
image.png
- lower():字符串转小写
print("MORE".lower())
- isupper():判断字符串是否为大写
print("BIg".isupper())
- islower():判断字符串是否为小写
print("MORE".islower())
- isdigit():判断字符串是否是数字字符串
print("123".isdigit())
- len():判断字符串的长度
str1 = "zmm"
print(len(str1))
- split(var1,width):以var1来切分字符串,将字符串切成width + 1个(width可以不填),返回字符串数组,注意的是:以指定字符切分的时候,指定字符在字符串的个数,小于要切分的width,此时按照字符串中该字符出现的次数切分
"""
split(切割的字符,切割的份数)
"""
str1 = "hello zmm"
print(str1.split(" ", 2))
#空字符只有一个,所以最多只能切割2部分,当切割份数为3时,返回结果还是按照所切割字符的个数切的结果
print(str1.split(" ", 3))
print(str1.split("l", 3))
- rsplit(var, width):从右边以var来分割字符串str,将str分割成width + 1个字符串
"""
rsplit(切割的字符, 切割的份数)
"""
str1 = "hello\n\rzmm\n......***\n\nr"
print(str1.rsplit("o"))
print(str1.rsplit("l"))
print(str1.rsplit("l", 1))
#l在字符串中只有两个,所以最多能切三部分,当切割的部分个数为4时候,还是只能切三部分
print(str1.rsplit("l", 4))
print(str1.rsplit("l", 3))
- splitlines(True):按照行('\r', '\r\n', \n')分隔,参数为True时,保留\n
"""
splitlines(True):按照\n, \r\n, \r切分字符串,参数为True保留切割的符号
"""
str1 = "hello\n\rzmm\r\ntrr\n\no\r"
#保留切割的符号
print(str1.splitlines(True))
#切割的符号在字符串前面,则返回''
print(str1.splitlines())
#默认是False,按照切割符合切割
print(str1.splitlines(False))
- strip(var):删除字符串左右空格或者指定字符;var不填时默认是删除左右空格
"""
strip(var):删除字符串左右的空格,或者指定var,返回新的字符串
"""
str1 = ",hello ,"
#返回字符串的地址不一致,说明是返回新的字符串
print(id(str1))
print(id(str1.strip()))
#删除字符串左右空格
str2 = " hello world "
print(str2.strip())
print(str2.strip(" "))
#删除字符串左右逗号
str3 = ",hello,world,"
print(str3.strip(","))
#删除字符串左右字符h
str4 = "hello zmmh"
print(str4.strip("h"))
str5 = ",hello "
#删除str5中的空格
print(str5.strip(" "))
#删除str5中的逗号
print(str5.strip(","))
#删除指定字符h
str6 = "hello"
print(str6.strip("h"))
- rstrip(var):删除字符串最右边空格,或者指定var,默认删除空格,返回新字符串
"""
rstrip():删除字符串右边空格或者指定最右边指定字符,返回新的字符串
"""
str1 = ",hello,"
print(str1.rstrip(","))
str2 = " hello m "
print(str2.rstrip())
#字符最末尾不是以o结尾
str3 = "hllolom"
print(str3.rstrip("o"))
#字符串末尾只包含lo两个字符
str4 = "heolllolo"
print(str4.rstrip("lo"))
-lstrip():删除字符串最左边字符,或者最左边指定字符,返回新的字符串
"""
lstrip():删除左边空格,或者指定字符
"""
"""
lstrip():删除左边空格,或者指定字符
"""
str1 = " hello "
print(str1.lstrip())
print(str1.lstrip(" h"))
#O不是最左边开头的字符串,返回原字符串
print(str1.lstrip("o"))
- repalce(old, new, times):用new替换old,替换times次,返回新的字符串
s = "ac, ,fb, ,b"
print(id(s))
s = s.replace(" ", "a", 1)
print(id(s))
- startswith(var, start, end):判断字符串是否以指定var开头
str1 = "hello mm"
print(str1.startswith("h"))
print(str1.startswith("l", 4))
print(str1.startswith("o", 0, 5))
- endswith(substring, start, end):判断字符串是否以指定字符结尾
print(str1.endswith("mm"))
print(str1.endswith("m", 0, len(str1)))
- index(str, start,end):查找指定字符;
- find(str, start, end):同上,唯一区别,find找不到返回-1,index会报错
str1 = "hello world"
print(str1.index("h"))
print(str1.index("o", 5, len(str1)))
#z字符串m不在str1中,报错
print(str1.index("m"))
str1 = "hello world"
print(str1.find("h", 0, 1))
print(str1.find("hel", 0, 1))
-rfind(var, start, end):从右往左查找var在字符串中的位置,返回下标,找不到测返回-1
str1 = "bcdAhHbb"
print(str1.rfind("H"))
print(str1.rfind("b", 0, 3))
print(str1.rfind("m", 0, len(str1)))
print(str1.rfind("bcd", 0, 3))
print(str1.rfind("bcd", 0, 2))
- rindex(var,start, end):从右往左查询var所在字符串的位置,若不存在,报异常
str1 = "hello zmm"
print(str1.rindex("he", 0, len(str1)))
print(str1.rindex("m"))
print(str1.rindex("0", 6, len(str1)))
- encode(encoding = "utf-8", error = "strict":设置字符串的编码方式,返回具体编码的结果(字符串为汉语文字时,返回的编码结果)
str1 = "hello"
str2 = "窗前"
str3 = "1234"
str4 = " - "
print(str1.encode("utf-8"))
print(str2.encode("utf-8"))
print(str3.encode("utf-8"))
print(str4.encode("utf-8"))
- bytes.decode(encoding="utf-8", errors="strict"):以utf-8的编码方式进行解码(编码的结果作为bytes)
str1 = "hello"
str2 = "窗前"
str1_utf8 = str1.encode("utf-8")
str2_utf8 = str2.encode("utf8")
print(str1_utf8.decode("utf-8"))
print(str2_utf8.decode("utf-8"))
- expandtabs(tabsize=8):将字符串中的\t转换成空格,tab 符号默认的空格数是 8 ,依次按照8的倍数填充
str1 = "he\tn"
print(str1.expandtabs())
print("he\tn".expandtabs(2))
print("he\tn".expandtabs(3))
print(str1.expandtabs(4))
str2 = "zmm\tn"
print(str2.expandtabs(3))
- isalpha():判断字符串是否全是字符或者汉字组成
str1 = "he\tn"
print(str1.isalpha())
print("hell你".isalpha())
print("123h".isalpha())
- isalnum():判断字符串是否全是字母或者数字
str3 = "hello\1"
print(str3.isalnum())
print('1233'.isalnum())
print("123abn".isalnum())
print("12 ab".isalnum())
- isnumeric():判断字符串是否全是数字
print("1234".isnumeric())
print("1234 q".isnumeric())
- isspace():判断字符串是否全是以空格组成
str3 = " "
print(str3.isspace())
print("1234 ".isspace())
- istitle():判断字符串中所有的首字母是否是大写,且其他字母是小写.
print("This is Pig".istitle())
print("this".istitle())
print("TH".istitle())
print("The 3".istitle())
print("1".istitle())
print("this is pig".title())
- title():把字符串所有首字母转成大写
print("this is 1".title())
print("12".title())
print("12 is tile".title())
image.png
- isdecimal():判断字符串是否只包含十进制数字,返回True or False
"""
isdecimal():判断字符串中是否只包含十进制数字,若包含返回true,反之返回False
"""
str1 = "12345"
print(str1.isdecimal())
str2 = "hh123"
print(str2.isdecimal())
str3 = "0010"
print(str3.isdecimal())
str4 = "0000"
print(str4.isdecimal())
str5 = "0x10"
print(str5.isdecimal())
- maketrans(var1, var2):用var2替换var1的编码值,返回字典,常用translate():来转换成对应的新字符串
"""
maketrans(var1, var2):将字符串中的var1用var2替换,返回替换后的编码值,返回类型是字典,
常与translate()方法一起使用:返回编码转换后的结果
"""
str1 = "hello"
str2 = str1.maketrans("h", "l")
print(str2)
#translate():将maketrans的结果作为入参,将maketrans之前的字符串来调用
print(str1.translate(str2))
字符串常用的函数
方法名 | 作用 | 返回值 | |
---|---|---|---|
len(str) | 计算str的长度 | 返回长度 | |
"var".join(str) | 以指定var连接str | 返回连接后的字符串 | |
max(str) | 查询str中所有的字符的Unicode值,并返回最大的字符 | 返回查询结果 | |
min(str) | 查询str中所有字符的Unicode值,并返回最小的 | 返回查询结果 | |
str(seq) | 将seq转换成str | 返回转换后的结果 | |
type(seq) | 查看seq的类型 | 返回具体的类型 | |
id(seq) | 查看seq的地址 | 返回具体地址 | |
reversed() | 反转字符串 | 返回反转后的地址 | |
chr() | 数字转成字母 | 返回数字转成对应ascii码的值 | |
ord() | 字母转成数字 | 返回字母转成的ascii码的值 | |
reversed() | 反转str | 返回反转后的迭代器,常与"".join()方法进行解引用,从而返回结果 |
- len():计算字符串的长度
print(len("hhh"))
image.png
- "var".join():以指定var连接字符串
print(" ".join("hhh"))
print(" - ".join("zmm"))
print("m".join("helo"))
print("1".join("mm"))
- min(str):寻找str中Unicode最小的字符并返回
str1 = "bcdAhH"
print(min(str1))
- max(str):寻找str中Unicode最大的字符并返回
str1 = "bcdAhH"
print(max(str1))
- reversed():反转字符串,返回反转后的地址:一般用"".join(reversed())解引用,此时返回具体结果
str2 = "hello zmm"
#更新字符串
print(str2[:6] + "xsk")
print(id(str2))
print(id("".join(reversed(str2))))
print(reversed(str2))
- ord():把字符转成对应ascii的数字
image.png
-
chr():把数字转化成对应ascii的字母
- reversed():反转字符串,返回反转后的迭代器,常用"".join()来解引用
s = "hello"
#反转前的地址
print(id(s))
reverse_s = reversed(s)
print(reverse_s)
#反转后的地址
print(id(reverse_s))
#反转后的结果
print("".join(reverse_s))
切片
- 语法:
str[start:end:步长]
str1 = "hello"
#从0切到最后,步长默认为1
print(str1[0::])
#反转字符串
print(str1[-1::-1])
#[0,3) 每隔两个切割字符串
print(str1[0:3:2])
#字符串拼接
print("zmm" + str1)
#取0号字符
print(str1[0])
str2 = "hello zmm"
#更新字符串
print(str2[:6] + "xsk")