本节我们继续讲python的string数据类型剩下部分内容。
Python使用replace()函数来实现字符串的替换,其语法为:
str.replace(old, new[, max])
- old -- 将被替换的子字符串。
- new -- 新字符串,用于替换old子字符串。
- max -- 可选字符串, 替换不超过 max 次
执行成功后,返回替换后的新字符串。
比如下面的实例,我们将 “hello,world!”替换为 “hello,python!”:
-
# 字符串替换
-
-
str5 =
'python'
-
print(str3.replace(
'world', str5))
-
print(str3.replace(
'l',
't'))
# 将l替换为t,不限制替换次数
-
print(str3.replace(
'l',
't',
2))
# 将l替换为t,限制最多替换2次
输出为:
hello, python!
hetto, wortd!
hetto, world!
同样,我们也可以使用正则表达式来实现更加强大的字符串替换功能,正则表达式比较复杂,我们可以先往后放一放,继续下面的学习。
Python提供了多种方式来实现字符串的查找,下面我们结合实例分别介绍。
1、find()方法
语法 : str.find(sub_str, beg=0, end=len(string))
- sub_str– 需要查找的子串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。
如果查找成功,则返回子串开始的索引值,如果失败,则返回-1。
-
-
# 字符串查找
-
-
str6 =
'hello, python'
-
sub_str_find =
'll'
-
sub_str_not_find =
'world'
-
print(str6.find(sub_str_find))
# ‘ll’匹配到str6的起始索引是2,所以返回2
-
print(str6.find(sub_str_find,
3))
# 指定从str6的索引为3开始,所以查找不到,返回-1
-
print(str6.find(sub_str_not_find))
# world字符串不在str6里面,返回-1
2、index()方法
语法 : str.index(sub_str, beg=0, end=len(string))
- sub_str– 需要查找的子串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。
它和find()方法是一样的,只不过如果查找不到,find()方法返回-1,而index()会抛出一个异常(Exception)。关于python异常的处理,我们在后面章节会介绍,这里不需要深究。
-
-
print(str6.index(sub_str_find,
3))
# 指定从str6的索引为3开始,所以查找不到,抛出一个
-
-
异常
抛出异常:
Traceback (most recent call last):
File "D:/跟我一起学python/练习/5/5_4.py", line 54, in <module>
print(str6.index(sub_str_find, 3)) # 指定从str6的索引为3开始,所以查找不到,抛出一个异常
ValueError: substring not found
正式的代码里面,我们应该对这个异常进行处理,如果不处理程序会报错并退出。
3、rfind()方法和rindex()方法
它们的使用方式和find()、index()一样,唯一的区别是它们是反向查找的(从右向左),返回的是子串最后一次出现的位置。
可以看看下面的实例:
-
str7 =
'hello, python, hello'
-
-
print(str7.find(
'ell'))
# 正向查找,返回第一次查找到的索引
-
print(str7.rfind(
'ell'))
# 反向查找,返回第一次查找到的索引
它的输出为:
1
16
反向查找时,返回的是,从右到左匹配到的第一个子串的首字符索引。
需要注意的是,字符串查找返回的都是正向索引的值。这点不要和字符串截取中,反向索引的负数值搞混淆了。
我们同样可以使用正则表达式实现更加强大的字符串查找功能。
Python最常用的输出方式是print(),语法如下。
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
参数说明:
file: 输出的目标文件流,缺省为系统的标准输出.
sep: 插入到不同value之间的字符,缺省是空格符.
end: 最后一个value之后的字符,缺省是\n换行.
flush: 强制刷新标记.
我们主要修改第一个参数value,它的表达方式是: “格式化字符串”% 参数列表。
如果参数列表是多个,则用小括号括起来,“格式化字符串”% (参数1, 参数2, …)
“格式化字符串”由我们期望输出的字符串和一系列格式化符号组成,下面是格式化符号列表:
符 号 |
描述 |
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%u |
格式化无符号整型 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化浮点数字,可指定小数点后的精度 |
%e |
用科学计数法格式化浮点数 |
%E |
作用同%e,用科学计数法格式化浮点数 |
%g |
%f和%e的简写 |
%G |
%f 和 %E 的简写 |
%p |
用十六进制数格式化变量的地址 |
相匹配的,python提供了一系列辅助指令:
符号 |
功能 |
* |
定义宽度或者小数点精度 |
- |
用做左对齐 |
+ |
在正数前面显示加号( + ) |
<sp> |
在正数前面显示空格 |
# |
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 |
显示的数字前面填充'0'而不是默认的空格 |
% |
'%%'输出一个单一的'%' |
(var) |
映射变量(字典参数) |
m.n. |
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
下面是一个实例:
-
# 格式化输出
-
-
fmt_1ist = [
10.2,
99,
'hello']
-
print(
'this is example for fmt output \n %.4f, %#0x, %10s' % (fmt_1ist[
0], fmt_1ist[
1], fmt_1ist[
2]))
格式化输出本身是比较简单的,大家只要掌握了基本方法,需要的时候查上面的表即可。
另外,上面的方式如果参数过多的话,代码的可读性会非常差。Python提供了str.format方法,相对看起来要简单一些。这种方式也提供了很多格式控制符,大家可以自行百度,我们不一一列举了。
-
# str.format
-
-
print(
'this is example for fmt output \n {:.4f}, 0x{:x}, {:>10}'.format(fmt_1ist[
0], fmt_1ist[
1], fmt_1ist[
2]))
Python3.6之后又引入了一种新的格式化输出方法:f-string。它比上面方式要简单许多,这里不做介绍,大家可以去百度。
字符串还有很多操作,我们不可能一一讲解,大家可以在需要使用的时候去查询相关的手册。
功能 |
方法 |
str.strip() |
删除字符串两边的指定字符 |
str.lstrip() |
删除字符串左边的指定字符 |
str.rstrip() |
删除字符串右边的指定字符 |
in |
是否包含指定字符串 |
len(str) |
字符串长度 |
str.lower() |
转换为小写 |
str.upper() |
转换为大写 |
str.swapcase() |
大小写互换 |
str.capitalize() |
首字母大写 |
str.center() |
将字符串放入中心位置可指定长度以及位置两边字符 |
str.count() |
统计字符串中出现某个子串的次数 |
str * num |
使用*来复制字符串,num表示复制次数 |
str.startswith(prefix[,start[,end]]) |
是否以prefix开头 |
str.endswith(suffix[,start[,end]]) |
以suffix结尾 |
str.isalnum() |
是否全是字母和数字,并至少有一个字符 |
str.isalpha() |
是否全是字母,并至少有一个字符 |
str.isdigit() |
是否全是数字,并至少有一个字符 |
str.isspace() |
是否全是空白字符,并至少有一个字符 |
str.islower() |
是否全是小写 |
str.isupper() |
是否全是大写 |
str.istitle() |
是否是首字母大写的 |
str.partition() |
分割,前中后三部分 |
str.splitlines() |
根据换行执行分割 |
str.zfill() |
返回指定长度的字符串,原字符串右对齐,前面填充0 |
|
|
下一节我们继续讲bytes数据类型。
本节课程的视频和实例源码下载方式:点击->我的主页,查看个人简介。
你也可以直接到这个页面看对应的视频: 免费视频教程!零基础学Python系列(6) - 数据类型之String(下)
我尽量坚持每日更新一节。
转载:https://blog.csdn.net/j00105840/article/details/105899221