1.6.1字符串常用操作
1.6.1.1拼接字符串
使用”+”运算符可以完成对多个字符串的拼接,”+”元素安抚可以连接多个字符串并产生一个字符串对象
示例代码:
teacher ="Will"
content="主要负责Python自动化"
结果:
Will主要负责Python自动化
字符串不允许直接与其他类型的数据拼接。
示例代码:
name="李二狗"
course="语文成绩是"
score=97 #(int类型)
print(name+course+score)
结果:
Traceback (most recent call last):
File "F:/PYHome/FrameVIP07/Unit5/Unit5class1.py", line 20, in <module>
print(name+course+score)
TypeError: can only concatenate str (not "int") to str
那我们该如何解决这个问题呢?将int类型强转为string类型即可
示例代码:
name="李二狗"
course="语文成绩是"
score=97
print(name+course+str(score))
结果:
李二狗语文成绩是97
1.6.1.2计算字符串的长度
由于不同字符所占字节数不同,所以要计算字符串的长度,需要先了解各字符所占的字节数。在Python中,数字,英文,小数点,下划线,空格占一个字节;一个汉字可能占2-4个字节,占几个字节取决于采用的编码。在GBK当中占2个字节,在UTF-8编码占3个字节。
在Python中,提供了len()字符串的长度,len(String),通过len()函数计算字符串的长度时。不区分英文、数字和汉字,所有字符都占用1个字节,在实际开发过程中有时候需要获取字符串实际所占的字节数,这个时候就要使用encode()方法
示例代码:
#计算字符串的长度
str1 = "人生苦短,我用python!" #字符串1和2的区别一个是英文的',' 一个是中文的 ',
str2 ="人生苦短,我用python!"
print(len(str1))
print(len(str1.encode())) #获取utf编码下的字符长度
print(len(str2.encode())) #获取utf编码下的字符长度
print(len(str1.encode('GBK')) )#获取GBK编码下的字符长度
print(len(str2.encode('GBK')) )#获取GBK编码下的字符长度
运行结果:
14
28
26
21
20
1.6.1.3截取字符串
上一小节说过,字符串和列表、元组一样都是Python中的序列,所以要截取字符串,可以采用切片的方法实现。通过切片方法截取字符串的语法格式如下:
string[start: end:step]
string:要截取的字符串
start:表示要截取的第一个字符的索引(包括在字符),如果不指定,则默认为0
end:表示要截取的最后一个字符的索引(不包括该字符),如果不指定则默认字符串的长度
step:表示切片的步长,如果省略则默认为1,当省略该步长时,最后一个冒号也可以省略。
示例代码:
str1 = "人生苦短,我用python!"
substr1=str1[1] #截取第2个字符
substr2=str1[5:] #从第6个字符进行截取
substr3=str1[:5] #从左边开始截取5个字符
substr4=str1[2:5]#从第3个字符截取到第5个字符
print(substr1)
print(substr2)
print(substr3)
print(substr4)
结果:
生
我用python!
人生苦短,
苦短,
1.6.1.4 分割、合并字符串
在Python中,字符串对象提供了分割和合并字符串的方法。分割字符串是把字符串分割为列表,而合并字符串是把列表合并为字符串,分割字符串和合并字符串可以看做是互逆操作。
1.分割字符串
字符串的对象的split()方法可以实现字符串分割,也就是把一个字符串按照指定的分割符切分为字符串列表。在列表的元素中,不包括分隔符。split()方法的语法格式如下:
str.split(sep,maxsplit)
str:表示要进行分割的字符串
sep:用于指定分割符
maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数,个数最多为maxsplit+1
返回值:分隔后的字符串列表。该列表的元素为以分隔符为界限分隔的字符串(不含分隔符),当该分隔符前面(或与前一个分隔符之间)无内容时,将返回一个空字符串元素。
说明:在split()方法中,如果不指定sep参数,那么也不能指定maxsplit参数。
示例代码:
str1="我的博 客 网 址 是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343"
list1=str1.split() #采用默认分隔符进行分割
list2=str1.split('>>>') #使用>>>符号进行分割
list3=str1.split('.') #采用使用.分隔
list4=str1.split(' ',4) #采用空格进行分割,并且只分割前4个
list5=str1.split('>') #采用> 进行分割
print(list1)
print(list2)
print(list3)
print(list4)
print(list5)
运行结果:
['我的博', '客', '网', '址', '是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是', 'https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是>>>https://blog', 'csdn', 'net/qq_15650277?spm=1000', '2115', '3001', '5343']
['我的博', '客', '网', '址', '是>>>https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
['我的博 客 网 址 是', '', '', 'https://blog.csdn.net/qq_15650277?spm=1000.2115.3001.5343']
2合并字符串
合并字符串与拼接字符串不同,他会将多个字符串采用固定的分隔符连接在一起。
格式: strnew=string.join(iterable)
strnew:表示合并后的生成的新字符串
String:字符串类型,用于指定合并时的分隔符
iterable:可迭代对象。该迭代对象中的所有元素(字符串)
可迭代对象中的每一个字符(除了第一个字符外)都会添加上string字符串类型
示例代码:
str1='@'.join(["苹果","香蕉","葡萄"])
print(str1)
结果:
苹果@香蕉@葡萄
1.6.1.5检索字符串
在python中提供了很多方法用于字符串查找的方法
1.count()方法
count()方法用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在返回0,否则返回出现的次数
示例代码:
str1="zhaoqianxueli"
print(str1.count('z'))
结果:
1
2.find()方法
该方法用于检索是否包含指定的子字符串,如果检索字符串不存在,则返回-1,否则返回首次出现该字符串时的索引
Str.find(sub[,start[,end]])
str:表示原字符
sub:表示要检索的子字符串
start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索
end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾
示例代码:
str1="zhaoqianxueli"
print(str1.find('a',1,5))
3.index方法
该方法和find()方法类似,只不过是使用index()方法,当指定字符不存在会抛出异常
4.startswith()方法
startswith方法用于检索字符串是否以指定子字符串开头。如果是则返回True,否则返回False
5.endswith()方法
endswith方法用于检索字符串是否以指定子字符串结尾。如果是则返回True,否则返回False
示例代码:
str1="zhaoqianxueli"
print(str1.startswith('z'))
print(str1.endswith('z'))
结果:
True
False
1.6.1.6字母的大小写转换
在Python中,字符串对象提供了lower()方法和upper()方法进行字母的大小写转化。
lower() 将大写字母转化为小写
upper()将小写字母转化为大写
示例代码:
str1="ZJAaoqianxueli"
print(str1.lower())
print(str1.upper())
结果:
zjaaoqianxueli
ZJAAOQIANXUELI
1.6.1.7 去除字符串中的空格和特殊字符
在Python中去除空格和特殊字符通常使用strip方法,lstrip去除左侧的空格和特殊字符,rstrip去除右侧的空格和特殊字符。
strip()方法用于去掉字符串左、右两测的空格和特殊字符
Str.strip[chars]
Str:原字符
chars:用于指定要去除的字符,如果不指定默认将去除空格、制表符”\t”、回车符”/r”和换行符”/n”
lstrip,rstrip 使用方法和strip一样,区别在于一个是去除左侧、一个是右侧
示例代码:
str1="@谷雨飞鱼@"
print(str1.strip('@'))
print(str1.lstrip('@'))
print(str1.rstrip('@'))
结果:
谷雨飞鱼
谷雨飞鱼@
@谷雨飞鱼
1.6.1.8格式化字符串
格式化字符串是指先定制一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中格式化字符串有以下两种方法:
1.使用”%”操作符
‘%[-][+][0][m][.n]格式化字符串’%exp
说明:
-:可选参数,指定左对齐,正数前方无符号,负数前面加负号
+:可选参数,指定右对齐,正数前方有符号,负数前面加负号
0:表示右对齐,正数前方无符号,负数前面加负号,用0填充空白
m:可选参数,表示占有宽度
.n:可选参数,表示小数点后保留的位数
格式化字符串:用于指定类型,其值如下表
格式化字符 | 说明 | 格式化字符 | 说明 |
---|---|---|---|
%s | 字符串 | %r | 字符串(采用repr()显示) |
%c | 字符 | %o | 八进制整数 |
%d或%i | 十进制整数 | %e | 指数 基地写为e |
%x | 十六进制整数 | %E | 指数 |
%f或%F | 浮点数 | %% | 字符% |
exp:要转化的项如果有多个,需要通过元组的形式进行指定。
示例代码:
#左对齐 右对齐 -号和+号区别 一个是左对齐 一个是右对齐 10是指定占有的宽度,0是指定空位用0填充 .f是指定小数位,传递的参数大于2个要使用元组
print("%-10d"%20)
print("%-10d"%-20)
print("%+10d"%-20)
print("%+10d"%20)
print("%010d"%20)
print("%+10.2f"%-20)
print("%-10d+%09.2f"%(20,20))
结果:
20
-20
-20
+20
0000000020
-20.00
20 +000020.00
2.使用字符串对象的format()方法
字符串对象提供了format()方法用于进行字符串格式化,需要使用”{}”和”:”指定占位符
Str.format(args)方法
Str:指定字符串的显示样式(模板)
args:用于指定要转化的项
format方法用于进行字符串格式化,语法格式()里面的内容为说明:
{[index(指定参数的位置索引值从0开始)][:[fill(指定空白处要填的字符)][align(指定对齐方式<左对齐 >右对齐;值为”=”时表示右对齐针对于数字类型)][sign:可选参数,用于指定有无符号数] #(是否显示二进制 八进制 十六进制标识) width[.precision(指定保留的小数位数)][typey(用于指定类型)] ]}
格式化字符 | 说明 | 格式化字符 | 说明 |
---|---|---|---|
s | 对字符串类型格式化 | b | 将十进制整数自动化转化成二进制表示再格式化 |
d | 十进制整数 | o | 将十进制整数自动化转化成八进制表示再格式化 |
c | 将十进制整数自动转化成对应的Unicode字符 | x或者X | 将十进制整数自动化转化成十六进制表示再格式化 |
e或者E | 转换为科学计数法表示格式化 | f或者F | 转换为浮点数 |
g或者G | 自动在e和f或者E和F中切换 | % | 显示% |
format这里我就举一些例子吧,具体的自己理解一下吧,可以看一下
https://www.runoob.com/python/att-string-format.html
示例代码:
print("{}*{}={}".format(1,2,2))
print("{:-.2f}".format(2))
结果:
1*2=2
2.00