『无为则无心』Python序列 — 17、Python字符串操作常用API
上一篇文章说了Python字符串下标和切片的概念,这篇文章来说说Python中对字符串的常用操作。
对字符串的操作主要分为三大类:查找、修改和判断。
1、字符串的查找
所谓字符串查找方法,即是查找一个子串在字符串中的位置或出现的次数。
@1、find()方法
find()方法是,检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始位置的下标,否则则返回-1。
1)语法:
字符串序列.find(子串, 开始查找的位置下标, 结束查找的位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。"
print(mystr.find('short')) # 8
# 在字符串标记的范围内查找
print(mystr.find('o', 13, 25)) # 15
print(mystr.find('hello')) # -1
@2、index()方法
index()方法检测某个子串是否包含在这个字符串中,如果存在返回这个子串开始的位置下标,否则则报异常。
index()方法获取指定元素在列表中的第一次出现时索引,如果一个字符串内出现多处子串存在,返回第一个子串开始的位置下标。
1)语法:
字符串序列.index(子串, 开始查找的位置下标, 结束查找的位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。"
print(mystr.find('short')) # 8
# 在字符串标记的范围内查找
# 可以只写开始位置
print(mystr.find('o', 13, 25)) # 15
# 报错ValueError: substring not found
print(mystr.find('hello'))
@3、rfind()和rindex()方法
rfind()方法: 和find()方法功能相同,但查找方向为右侧开始。rindex()方法:和index()方法功能相同,但查找方向为右侧开始。
注意:但是下标还是从左到右,从0开始算起,只是查找开始的方向不同。
@4、count()方法
count()方法:返回某个子串在字符串中出现的次数。
1)语法:
字符串序列.count(子串, 开始位置下标, 结束位置下标)
注意:开始和结束位置下标可以省略,表示在整个字符串序列中查找。
2)快速体验:
mystr = "Life is short,you need Python。"
print(mystr.count('o')) # 3
# 在字符串标记的范围内查找
# 可以只写开始位置
print(mystr.count('o', 13, 25)) # 1
print(mystr.count('hello')) # 0
2、字符串的修改
所谓修改字符串,指的就是通过函数的形式修改字符串中的数据。(字符串修改的方法很多,我们只讲解一下最常用的。)
@1、replace()方法
replace():替换
1)语法:
字符串序列.replace(旧子串, 新子串, 替换次数)
注意:替换次数如果查出子串出现次数,则替换次数为该子串出现次数。
2)快速体验:
mystr = "hello and String and python and world"
# 1.把字符串中的and全部换成he,查出几次,替换几次。
# 结果:hello he String he python he world
new_str = mystr.replace('and', 'he')
print(new_str)
# 2。替换次数如果超出子串出现的次数,表示替换所有子串
# 结果:hello he String he python he world
new_str = mystr.replace('and', 'he', 10)
print(new_str)
# 3、查出的子串中,只替换前两个
# 结果:hello he String he Python and world
new_str = mystr.replace('and', 'he', 2)
print(new_str)
3)注意(重要)
调用了replace()方法后,发现原有字符串的数据并没有做到修改,修改后的数据是replace()方法的返回值,说明字符串是不可变数据类型。
同时也说明:说明replace()方法有返回值,返回值是修改后的字符串。
应该所有关于字符串修改的函数,都有返回值,且返回修改后的字符串。
总结:数据按照是否能直接修改分为可变类型数据和不可变类型数据两种。字符串类型的数据修改的时候不能改变原有字符串,属于不能直接修改数据的类型即是不可变类型。
@2、split()方法
split()方法:按照指定字符分割字符串。返回一个列表,并丢失字符串中包含的分割字符。
1)语法:
字符串序列.split(分割字符, num)
注意:
num表示的是分割字符出现的次数,即将来返回数据个数为num+1个。
2)快速体验:
mystr = "hello and String and python and world"
# 1.以and为分割符,分割字符串,出现的分割全部分割。
# 结果:['hello ', ' String ', ' python ', ' world']
new_str = mystr.split('and')
print(new_str)
# 2.只把前两次出现的分割符,进行字符串的分割
# 结果:['hello ', ' String ', ' python and world']
new_str = mystr.split('and', 2)
print(new_str)
注意:如果分割字符是原有字符串中的子串,分割后则丢失该子串。
@3、join()方法
join()方法:用一个字符或子串合并字符串,即将多个字符串合并为一个新的字符串。
1)语法:
字符或子串.join(多字符串组成的序列)
2)快速体验:
# 合并列表里面的字符串为一个大的字符串
# 结果:aa...bb...cc
mylist = ['aa', 'bb', 'cc']
print('...'.join(mylist))
# 结果:hello world hello python
list1 = ['hello', 'world', 'hello', 'python']
print(' '.join(list1))
@4、capitalize()方法
capitalize()方法:将字符串第一个字符转换成大写。
代码演示如下:
"""
下面结果可以看到两点
1.字符串的第一个字符变成大写了。
2.除了首字符外,其他字符如有大写,都变成小写。
"""
# 结果:Life is short,you need python。
mystr = "life is short,you need Python。"
new_str = mystr.capitalize()
print(new_str)
注意:
capitalize()方法转换后,只字符串第一个字符大写,其他的字符全都小写。
@5、title()方法
title()方法:将字符串每个单词首字母转换成大写。
代码演示如下:
# 将字符串中的每个单词的首字母都转换成大写。
# 如果单词的首字母原本就是大写,保持不变。
# 结果:Life Is Short,You Need Python。
mystr = "life is short,you need Python。"
new_str = mystr.title()
print(new_str)
@6、lower()方法
lower()方法:将字符串中大写转小写。
代码演示如下:
# 把字符串变成全小写。
# 结果:life is short,you need python。
mystr = "life is short,You Need Python。"
new_str = mystr.lower()
print(new_str)
@7、upper()方法
upper()方法:将字符串中小写转大写。
代码演示如下:
# 把字符串变成全大写。
# 结果:LIFE IS SHORT,YOU NEED PYTHON。
mystr = "life is short,You Need Python。"
new_str = mystr.upper()
print(new_str)
@8、lstrip()方法
lstrip()方法:删除字符串左侧空白字符。
代码演示如下:
# 结果:"Life is short,you need Python。 "
mystr = " Life is short,you need Python。 "
new_str = mystr.lstrip()
print(new_str)
@9、rstrip()方法
rstrip()方法:删除字符串右侧空白字符。
代码演示如下:
# 结果:" Life is short,you need Python。"
mystr = " Life is short,you need Python。 "
new_str = mystr.rstrip()
print(new_str)
@10、strip()方法
strip()方法:删除字符串两侧空白字符。
代码演示如下:
# 结果:"Life is short,you need Python。"
mystr = " Life is short,you need Python。 "
new_str = mystr.strip()
print(new_str)
@11、ljust()方法
ljust()方法:返回一个原字符串左对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
1)语法:
字符串序列.ljust(长度, 填充字符)
2)示例:
# 输出结果:Pyhton....
mystr = "Pyhton"
new_str = mystr.ljust(10 , ".")
print(new_str)
@12、rjust()方法
rjust()方法:返回一个原字符串右对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
语法和ljust()方法相同。
代码演示如下:
# 字符串序列.rjust(长度, 填充字符)
# 输出结果:....Pyhton
mystr = "Pyhton"
new_str = mystr.rjust(10 , ".")
print(new_str)
@13、center()方法
center()方法:返回一个原字符串居中对齐的字符串,并使用指定字符(默认空格)填充至对应长度的新字符串。
语法和ljust()方法相同。
代码演示如下:
# 字符串序列.center(长度, 填充字符)
# 输出结果:..Pyhton..
mystr = "Pyhton"
new_str = mystr.center(10 , ".")
print(new_str)
"""
有的时候可能不是绝对居中,
补充字符数可能是奇数,
调整长度即可让补充字符数变成偶数,
来达到绝对居中效果。
"""
3、字符串的判断
所谓判断即是判断真假,返回的结果是布尔型数据类型:True 或 False。
@1、startswith()方法
startswith()方法:检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
1)语法:
字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
开始位置下标和结束位置下标可以不写,不写则是全字符串内检查。
2)快速体验:
mystr = "Life is short,you need Python"
# 结果:True
new_str = mystr.startswith('Li')
print(new_str)
# 结果False
mystr = "Life is short,you need Python"
new_str = mystr.startswith('Li', 3, 15)
print(new_str)
@2、endswith()方法
endswith()方法:检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查。
1)语法:
字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
开始位置下标和结束位置下标可以不写,不写则是全字符串内检查。
2)快速体验:
mystr = "Life is short,you need Python"
# 结果:False
new_str = mystr.endswith('thons')
print(new_str)
# 结果:False
new_str = mystr.endswith('thon', 5, 20)
print(new_str)
@3、isalpha()方法
isalpha()方法:如果字符串至少有一个字符,并且所有字符都是字母则返回 True, 否则返回 False。
代码演示如下:
mystr = "Life is short,you need Python"
mystr1 = 'hello'
mystr2 = 'hello12345'
# 结果:False 因为有空格
new_str = mystr.isalpha()
print(new_str)
# 结果:True
new_str = mystr1.isalpha()
print(new_str)
# 结果:False 因为有数字
new_str = mystr2.isalpha()
print(new_str)
@4、isdigit()方法
isdigit()方法:如果字符串只包含数字则返回 True,否则返回 False。
代码演示如下:
mystr = "12345 12345"
mystr1 = 'aaa12345'
mystr2 = '12345'
# 结果: False 因为有空格
new_str = mystr.isdigit()
print(new_str)
# 结果:False 因为有字母
new_str = mystr1.isdigit()
print(new_str)
# 结果:True
new_str = mystr2.isdigit()
print(new_str)
@5、isalnum()方法
isalnum()方法:如果字符串至少有一个字符,并且所有字符都是字母或数字或者字母和数字的组合,则返回 True,否则返回False。
代码演示如下:
mystr = "Life is short,you need Python"
mystr1 = 'aaa12345'
mystr2 = '12345-'
# 结果:False 因为有空格
new_str = mystr.isalnum()
print(new_str)
# 结果:True
new_str = mystr1.isalnum()
print(new_str)
# 结果:False 只能是数字或者字母,其他字符都不行
new_str = mystr1.isalnum()
print(new_str)
@6、isspace()方法
isspace()方法:如果字符串中只包含空白,则返回True,否则返回False。
代码演示如下:
mystr = "Life is short,you need Python"
mystr1 = ' '
# 结果:False
new_str = mystr.isspace()
print(new_str)
# 结果:True
new_str = mystr1.isspace()
print(new_str)
4、补充:Python中方法和函数的区别。
这里简单的说一说方法和函数,在Python3中,对方法和函数有明确的规定:
- 函数
function:
A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.
从定义的角度上看,我们知道函数(function)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。 - 方法
method:
A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).
那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在Class定义的函数就是方法。(我的理解) - 总结:在Python3中方法和函数基本上是一样。
只不过方法必须通过对象.方法()的形式调用,如xxx.print()方法实际上就是和对象关系紧密的函数。
而函数可以直接使用,如print()。
(就先这样理解,以后学习到函数的时候在详细说明,这和Java还是有区别的。)
『无为则无心』Python序列 — 17、Python字符串操作常用API的更多相关文章
- 『无为则无心』Python基础 — 16、Python序列之字符串的下标和切片
目录 1.序列的概念 2.字符串的下标说明 3.字符串的切片说明 1.序列的概念 序列sequence是Python中最基本的数据结构.指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通 ...
- 『无为则无心』Python序列 — 20、Python元组的介绍与使用
目录 1.元组的应用场景 2.定义元组 3.元组的常见操作 @1.按下标查找数据 @2.index()方法 @3.count()方法 @4.len()方法 4.元祖中的列表元素 5.扩展:序列封包和序 ...
- 『无为则无心』Python序列 — 22、Python集合及其常用操作
目录 1.Python集合特点 2.Python集合的创建 3.操作集合常用API (1)增加数据 @1.add()方法 @2.update()方法 (2)删除数据 @1.remove()方法 @2. ...
- 『无为则无心』Python序列 — 23、Python序列的公共API
目录 1.运算符 @1.+加号 @2.*乘号 @3.in或not in 2.公共方法 @1.len()方法 @2.del和del() @3.max()方法 @4.min()方法 @5.range() ...
- 『无为则无心』Python序列 — 24、Python序列的推导式
目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...
- 『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)
目录 1.通过切片对列表的操作 (1)通过切片对列表进行修改 (2)通过切片对列表进行删除 (3)注意 2.列表的循环遍历 (1)while循环遍历 (2)for循环遍历 3.列表嵌套 4.综合示例 ...
- 『无为则无心』Python基础 — 62、Python中自定义迭代器
目录 1.迭代器对象的创建 2.实际应用案例 3.总结: 1.迭代器对象的创建 迭代器是一种可以被遍历的对象,并且能够作用于next()函数,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 『无为则无心』Python基础 — 4、Python代码常用调试工具
目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...
随机推荐
- OO第1.2次作业·魔鬼的三角函数化简
多年以后,面对办公室的屏幕,我会回忆起开始肝第二周OO作业的那个遥远的下午.那时的程序是一个一两百行的符号求导,基类与接口在包里一字排开,工整的注释一望到底 谁能想到,接下来的十几个小时我要经历什么样 ...
- Docker网络,手把手教你如何实现容器网络相关知识
Docker网络 理解Docker0 清空所有环境 测试 三个网络 #问题:docker 是如何处理容器网络访问的? [root@hsStudy /]# docker run -d -P --name ...
- 【Cocos2d-x】屏蔽Emoji并解决由于Emoji导致的崩溃问题
IOS的Emoji表情因为编码问题,在Android手机上无法正常显示,如果当前的cc.Label节点使用的是系统字,在系统字库中找不到对应编码的字符,会导致崩溃. 为了解决这个问题,又要兼顾新老版本 ...
- 2020 Kali Linux Zenmap 安装(可视化界面)
跟着教程学Kali Linux,我安装的2020版的,发现Zemap没被预装. 1.下载 zenmap https://nmap.org/download.html 2.rpm转deb 2020 Ka ...
- Linux单用户模式(修改密码、运行级别)方法详解
很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...
- cnetos 网卡绑定 eth0+eth1做双网卡绑定到bond0
1.网卡绑定:eth0+eth1做双网卡绑定到bond0 二.网络配置 网卡绑定1./etc/sysconfig/network-scripts/目录下建立ifcfg-bond0文件,内容如下DEVI ...
- Autofac 集成测试 在 ConfigureContainer 之后进行 Mock 注入
在使用 Autofac 框架进行开发后,编写集成测试时,需要用 Mock 的用于测试的模拟的类型去代替容器里面已注入的实际类型,也就需要在 Autofac 完全收集完成之后,再次注入模拟的对象进行覆盖 ...
- ES6笔记2
ES6笔记2 Promise Promise 是 ES6 引入的异步编程的新解决方案,语法上是一个构造函数 一共有3种状态,pending(进行中).fulfilled(已成功)和rejected(已 ...
- python中的时间戳和格式化之间的转换
import time #把格式化时间转换成时间戳 def str_to_timestamp(str_time=None, format='%Y-%m-%d %H:%M:%S'): if str_ti ...
- 在命令行模式下查看Python帮助文档---dir、help、__doc__
在命令行模式下查看Python帮助文档---dir.help.__doc__ 1.dir函数式可以查看对象的属性,使用方法很简单,举str类型为例,在Python命令窗口输入 dir(str) 即 ...