一.String字符串
1.常用功能
1.1填充
代码演示:
#填充
#center(width[,fillchar]):返回一个指定宽度的居中字符串,width是填充之后整个字符串的长度
#fillchar是需要被填充的字符串,默认为空格
#char——》character字符
str1="hello"
print(str1.center(20))
print(str1.center(20,"*"))
#print(str1.center(20,"abc")) #TypeError: The fill character must be exactly one character long
#注意:使用了center功能之后,生成了一个新的字符串,原字符串出现在中间,两边使用指定的字符填充
#注意:fillchar必须只有一个字符
#1.just(width[,fillchar]) 返回一个指定宽度的字符串,将原字符串居左对齐,width是填充之后整个字符串的长度
#l:left
print(str1.ljust(20,"%"))
#rjust(width[,fillchar]) 返回一个指定宽度的字符串,将原字符串居右对齐,width是填充之后整个字符串的长度
#r:right
print(str1.rjust(20,"%"))
#zfill(width)返回的是一个指定宽度的字符串,将原字符串居右对齐,width使用0填充
print(str1.zfill(20))
1.2查找
#查找【掌握】
str2="abcdefgh123hello"
#find(str[,start,end]):从左到右依次检测,str是否在原字符串中,如果存在则返回位置
#特点:如果查找到,返回的是子字符串的第一个字符在原字符串中的下标,如果查找不到则返回-1
print(str2.find("hello"))
print(str2.find("e"))
print(str2.find("yyy"))
print(str2.find("h",3,10))
#注意:如果子字符串在原字符串中出现多次,则只返回第一次查找到的下标
#rfind():类似于find,只是从右往左检测
print(str2.rfind("hello"))
print(str2.rfind("e"))
#index():和find的用法基本相同,唯一的区别:find如果查找不到返回-1,但是index则直接报错
print(str2.index("hello"))
#print(str2.index("yyy")) #ValueError: substring not found
#rindex()
#max():返回原字符串中的最大字母
#使用格式:max或者min(str)
print(max(str2))
#min():返回原字符串中的最小字母
print(min(str2))
1.3提取
代码演示:
#提取:
#strip(str):使用str作为条件提取字符串,需要注意:只能去除两端指定的字符【trim】
str1="*****today is ******** a good day*****"
print(str.strip("*"))
#lstrip():去除左边的指定字符串
print(str1.lstrip("*"))
#rstrip():去除右边的指定字符串
print(str1.rstrip("*"))
1.4分割和合并
代码演示:
#分割和合并【掌握】:正则表达式
#split(str[,num]):使用指定字符串分割原字符串,返回一个列表【字符串转换成列表】
str1="today in a good day"
print(str1.split(" ")) #['today', 'in', 'a', 'good', 'day']
str2="hello"
#print(str1.split("")) #ValueError: empty separator
#注意:使用split功能的时候,其中的分割字符串不能为空
#num表示分割符出现的次数
print(str1.split(" ",2)) #['today', 'in', 'a good day']
#sliptlines(flag) 按照换行符【\n,\r,\r\n】分割,结果为列表
#flag可写可不写,False:忽略换行符,True:表示保留换行符
s1="""today
is
a
good
day
"""
print(s1.splitlines(True)) #['today\n', 'is\n', 'a\n', 'good\n', 'day\n']
print(s1.splitlines(False)) #['today', 'is', 'a', 'good', 'day']
#join(list):将原字符串作为连接符号,将列表中的元素连接起来,结果为一个字符串【列表转换成字符串】
str3="-"
list1=["zhangsan","lisi","jack"]
str4=str3.join(list1)
print(str4)
1.5替换
#替换【掌握】
#replace(old,new[,max]):将原字符串中的old字符串替换为new字符串,如果指定了max,则替换的次数不超过max次
str1="today is a good day"
#需求:将其中的good替换为bad
#注意:替换之后仍然是生成了一个新的字符串
print(str1.replace("good","bad"))
print(str1)
str2="today is a good good good day"
#注意:max:从左到右检测,只替换个数的字符串
print(str2.replace("good","bad",2))
#replaceAll()
1.6判断
代码演示:
#判断
#注意:全部返回的结果为布尔值
#isalpha():如果字符串至少有一个字符,并且所有的字符都是字母的话,则返回True
print("".isalnum())
print("abc".isalnum())
print("abc123".isalnum())
print("~~~~~~~")
#isalnum():如果字符串中至少有一个字符,并且所有的字符是数字或者字母的话,则返回True
print("".isalnum())
print("abc".isalnum())
print("abc123".isalnum())
print("~~~~~~~")
#isupper():如果字符串中至少包含一个区分大小写的字符,并且所有的字符都是大写,则返回True
print("abc".isupper())
print("123".isupper())
print("aBc".isupper())
print("ABC".isupper()) #True
#islower()
print("~~~~~~~")
#istitle():如果字符串的单词是标题化的,则返回True
print("this is a test".istitle())
print("This is a test".istitle())
print("This Is A Test".istitle())
print("~~~~~~~")
#isdigital()【判断字符串中是否只包含数字,是则返回True】
print("abc123".isdigit())
print("abc".isdigit())
print("123".isdigit())
#结合int("123") int("123abc") 使用
print("~~~~~~~")
#isnumeric():判断字符串中是否只包含数字字符,是则返回True
print("abc123".isnumeric())
print("abc".isnumeric())
print("123".isnumeric())
print("~~~~~~~")
#isdecimal():判断字符串中是否只包含十进制,是则返回True
print("2434".isdecimal())
print("454e4".isdecimal())
print("~~~~~~~")
#isspace():判断字符串中是否只包含空格,是则返回True
print("abc 43".isspace())
print(" ".isspace())
1.7前缀和后缀
#前缀和后缀
#结果为布尔值
#startswitch(str[,beg=0,end=len(string)])
#判断原字符串是否是以指定字符串开头的,如果beg和end指定值,则表示在指定的范围内判断
str1="helloghjshgi"
print(str1.startswith("hello"))
#endswith(str[,beg=0,end=len(string)])
print(str1.endswith())
1.8编码器
代码演示:
#字符串的编码和解码
#https://www.baidu.com/s?wd=%E5%8D%83%E9%94%8B&rsv_spt=1&rsv_iqid=0xdae3d65100023b6c&issp=1&f=8
#encode():将字符串转换为字节类型的过程
str2 = "hello 中文"
print(str2.encode())
print(str2.encode("utf-8"))
print(str2.encode("gbk"))
byte11 = str2.encode("gbk")
print(type(byte11))
#decode() :将字节类型转换为字符串的过程
print(byte11.decode("gbk"))
1.9ASCII码转换
代码演示:
#ASCII码转换
#ord():获取字符的整数表示
print(ord("A"))
print(ord("a"))
#chr():把编码转换成对应的字符
print(chr(65))
print(chr(97))
#需求:将hello转换成大写输出
s1="hello"
s2=""
for i in range(len(s1)):
num=ord(s1[i])
num-=32
ch=chr(num)
print(ch)
s2+=ch
print(s2)
1.10字符串映射
#字符串的映射
#maketrans(str1,str2):创建字符映射的转换表
#str1表示需要被转换的字符串,str2需要转换的目标
t=str.maketrans("ac","68")
print(t) #{97: 54, 99: 56}
1.11需要终点站掌握的功能
len()
count()
center()
starswith()
fing()和index()
strip()
replace()
split()
join()
isdigit()
ord()和chr()