免费视频教程!零基础学Python系列(6) - 数据类型之string(下)

本节我们继续讲python的string数据类型剩下部分内容。

  • 替换

Python使用replace()函数来实现字符串的替换,其语法为:

str.replace(old, new[, max])

 

  1. old -- 将被替换的子字符串。
  2. new -- 新字符串,用于替换old子字符串。
  3. 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(下)

我尽量坚持每日更新一节。

猜你喜欢

转载自blog.csdn.net/j00105840/article/details/105899221
今日推荐