python字符串的常用方法(3-2)

2023-11-09

目录

一.字符串find()和index()获取某个值的位置方法

二.字符串strip,lstrip,rstrip左右去空格方法

三.字符串的replace()替换方法

四.字符串bool集合


一.字符串find()和index()获取某个值的位置方法

  1.find和index的功能:

  • find和index都是返回你想寻找的成员第一次出现的位置

  2.find和index的用法:

 用法:
 string.find(item)->item:你想查询的元素,返回一个整型
 string.index(item)->item:你想查询的元素,返回一个整型或者报错

  拓展:字符串的位置是从左向右,从0开始的。空格也会算一个元素。

  演示:

  

# coding:utf-8

info = 'this is a string example!'
int_type = info.index('s')
int_type_02 = info.find('s')

print(int_type)
print(int_type_02)

  结果:

3
3

进程已结束,退出代码0

 3.find与index的区别?

  既然它们两个都能用于索引元素在字符串中第一次出现的位置,那它们两个有什么区别呢?

区别:

  • 如果find找不到元素,会返回-1
  • 如果index找不到元素,会直接导致程序报错

  演示:

# coding:utf-8

info = 'this is a string example!'
int_type01 = info.find('u')
int_type02 = info.index('u')

print(int_type01)
print(int_type02)

  结果:

Traceback (most recent call last):
  File "C:\Users\ds\AppData\Roaming\JetBrains\PyCharmCE2023.1\scratches\scratch_4.py", line 5, in <module>
    int_type02 = info.index('u')
                 ^^^^^^^^^^^^^^^
ValueError: substring not found

进程已结束,退出代码1

 由此可以看出当用index去索引一个字符串中不存在的元素的首次出现的位置,会直接报错。

 而当使用find索引一个字符串中不存在的元素的首次出现的位置,会返回-1

 演示:

# coding:utf-8

info = 'this is a string example!'
int_type01 = info.find('u')

print(int_type01)

  结果:

-1

进程已结束,退出代码0

  所以在日常生活中,建议大家直接选用find函数去获取一个元素在字符串中首次出现的位置


二.字符串strip,lstrip,rstrip左右去空格方法

  1.strip的功能:strip将去掉字符串左右两边的指定元素,默认去除空格

  2.strip的用法:

  用法:newstr=string.strip(item)

  参数:括弧里需要传一个你想去掉的元素,可不填写

3.strip的拓展:

  •  传入的元素如果不在开头或结尾则无效
  • Istrip仅去掉字符串开头的指定元素或空格
  • rstrip仅去掉字符串结尾的指定元素或空格
  • strip函数不会改变原字符串的值,而是返回一个新的字符串。如果想要改变原字符串,可以使用strip函数的原地操作版本Istrip和rstrip.
  • 原地操作版本
    :s ='  hello  '
    s = s.rstrip()
    print(s)  #输出'hello'
    但需要注意的是,因为字符串是不可变对象,原地操作版本的rstrip()方法是创建一个原字符串的副本,然后进行修改,并将返回的新字符串重新赋值给原变量。因此,调用rstrip()方法后,原字符串的值会被改变。

  演示:

# coding:utf-8

"""
   strip去掉的是字符串两边指定的元素或者空格,默认为空格
   lstrip去掉的是字符串开头的元素或者空格
   rstrip去掉的是字符串结尾的元素或者空格
"""

info = '    my name is sll    '
new_info = info.strip()  # 什么都不传,默认去除字符串两边的空格
print('.' + info + '.')
print('.' + new_info + '.')  # 加.是为了更直观的观察去除空格前后的变化

info_01 = 'my name is sll'
new_info_01 = info_01.strip(info_01)
print(new_info_01)
print(len(new_info_01))

new_str = 'abcdea'
print(new_str.strip('a'))
print(new_str.lstrip('a'))
print(new_str.rstrip('a'))

# 原地操作版本的rstrip()方法是创建一个原字符串的副本,然后进行修改,并将返回的新字符串重新赋值给原变量。
phone_number = '  13500001111  '
print('这是操作前的内存地址:' + str(id(phone_number)))
phone_number = phone_number.strip()
print('这是操作后的内存地址:' + str(id(phone_number)))
# 从上面可以看出,修改前后变量的内存地址不一致,说明它们已经不是同一个变量
print('.' + phone_number + '.')

  结果:

.    my name is sll    .
.my name is sll.

0
bcde
bcdea
abcde
这是操作前的内存地址:2082998961008
这是操作后的内存地址:2082998961776
.13500001111.

进程已结束,退出代码0

三.字符串的replace()替换方法

  1.replace的功能:将字符串中的old(旧元素)替换成new(新元素),并能指定替换的数量

  2. replace的用法:

  用法:
newstr string.replace(old, new, max)
参数:
old:被替换的元素
new:替代old的新元素
max:可选,代表替换几个,默认全部替换全部匹配的old元素

演示:

# coding:utf-8

info = ('要从小白到一个有经验的开发者,无论是通过视频还是文字教程学习,你会发现很'
        '少有初级课程就非常贴近实际工作的,作为一个刚入坑的小白通常并不知道需要学'
        '习什么,往往是自认为入门的时候都学习了,到了公司里才发现很多都不会。'
        '我希望做这样一个课程,虽是入门课程,但涉及相关领域的多处知识,让小白在学'
        '习后进入公司岗位不会因为没听过而蒙圈;同时希望这个课也可以帮助非Python工'
        '程师快速转型或者快速转职能')

a = '小白'
b = '一个'
c = '蒙圈'
d = '课程'
e = '*'
f = '0'
g = '$'
o = '@'

# test = info.replace(a, e)
# print(test)
# test = test.replace(b, e)
# print(test)
# test = test.replace(c, g)
# print(test)
# test = test.replace(d, o)
# print(test)
'''
下面这段代码属于链式调用,但不属于原地操作。
链式调用是指对同一个对象进行多次方法调用的过程,
每次方法调用都返回一个新的对象,可以通过连续调用多个方法来实现一系列的操作。
在这个例子中,字符串对象info上连续调用了多个replace方法,
每次调用都返回一个新的字符串对象,最终结果被保存在info中。
原地操作是指把修改后的值直接返回给原对象,不会创建新的对象。
而在这个例子中,每次replace方法调用都返回一个新的字符串对象,
所以不属于原地操作。如果要在原字符串上进行操作,可以使用类似于下面的代码:

'''

# 链式调用,不是原地操作,只是最终结果被保存在info中
info = info.replace(a, e).replace(b, e).replace(c, g).replace(d, o)
print(info)

 结果:

要从*到*有经验的开发者,无论是通过视频还是文字教程学习,你会发现很少有初级@就非常贴近实际工作的,作为*刚入坑的*通常并不知道需要学习什么,往往是自认为入门的时候都学习了,到了公司里才发现很多都不会。我希望做这样*@,虽是入门@,但涉及相关领域的多处知识,让*在学习后进入公司岗位不会因为没听过而$;同时希望这个课也可以帮助非Python工程师快速转型或者快速转职能

进程已结束,退出代码0

  提示:如果需要替换很多对象,则最好使用简洁,低代码的replace的链式调用方法。


四.字符串bool集合

1.isspace

  • 功能:isspace判断字符串是否是个由空格组成的字符串(字符串是否仅仅为空格)
  • 用法:booltype=string.isspace()->无参数可传,返回一个布尔类型
  • Ps:由空格组成的字符串,不是字符串

  演示:

# coding:utf-8

test_str01 = ''  # 这是一个空字符串
print(test_str01.isspace())

test_str01 = ' '  # 这是一个全为空格的字符串
print(test_str01.isspace())

  结果:

False
True

进程已结束,退出代码0

2.istitle

  • 功能:istitle判断字符串是否是一个标题类型(所有单词全是首字母大写)
  • 用法:booltype=String.istitle()->无参数可传,返回一个布尔类型
  • Ps:该函数只能用于英文

  演示:

# coding:utf-8

test_str01 = 'I Like Python'
print(test_str01.istitle())

test_str01 = 'i like python'
print(test_str01.istitle())

test_str02 = 'I Like PytHOn'  # 每部分单词首个字母大写,其他地方为小写,才能被判定为True
print(test_str02.istitle())

  结果:

True
False
False

进程已结束,退出代码0

3.isupper与islower

  • 功能:isupper判断字符串中的字母是否都是大写,islower判断字符串中的字母是否
    都是小写
  • 用法:booltype string.isupper ()->无参数可传,返回一个布尔类型
               booltype string.islower()->无参数可传,返回一个布尔类型

  演示:

# coding:utf-8

test_str01 = 'I LIKE PYTHON'
print(test_str01.isupper())
print(test_str01.islower())

print('*'*16)

test_str01 = 'i like python'
print(test_str01.isupper())
print(test_str01.islower())

print('*'*16)

test_str02 = 'I Like PytHOn'
print(test_str02.isupper())
print(test_str02.islower())

  结果:

True
False
****************
False
True
****************
False
False

进程已结束,退出代码0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python字符串的常用方法(3-2) 的相关文章

随机推荐

  • subList方法踩坑记录

    前言 现有一个简化的需求 假设有一个点位列表 1 2 4 5 现在需要将该列表从中间分成两份 序列1 1 2 序列2 4 5 分开后在序列1的末尾添加一个元素 3 变成 1 2 3 问题复现 在编写下面的测试代码运行后 结果并不是想要的 p
  • 这可能是,Flutter 中最“强悍”的内存泄漏检测方案......

    近两年来 无论是创新型应用还是老牌旗舰型应用 都在或多或少地使用 Flutter 技术 然而 目前 Flutter 业务团队反馈最普遍的问题是 Flutter 内存占用过高 Flutter 内存占用过高原因比较复杂 需另开一个主题才能说清楚
  • git rebase和merge区别

    一 概述 merge和rebase 标题上的两个命令 merge和rebase都是用来合并分支的 这里不解释rebase命令 以及两个命令的原理 详细解释参考这里 下面的内容主要说的是两者在实际操作中的区别 1 1 什么是分支 分支就是便于
  • sqli-labs第十七关(post-报错注入)

    进入到十七关后发现这关有点不同 上面多了一行提示 密码重新设置 咱也不懂啥意思 在试了写常规注入的方法后 没有发现什么可以利用的点 于是决定去看看代码 虽然我不会php 先看这一部分有sql语句的 从users表中搜索出uname和psw
  • linux查找服务器大文件,查找Linux系统中的大文件和大目录方法

    查找大文件 eg 查找当前目录下大于10MB的文件 复制代码 代码如下 find type f size 10000k exec ls lh awk print 8 5 Sample output kde share apps akrega
  • Zmap的原理(回复包校验机制)

    Nmap使用的方法是发送请求然后监听回应 虽然请求可以同步进行 但为了记录每一个未回应请求需要大量开销 导致速度下降 而ZMap使用了不同的方法 它发生的是无状态请求 发送之后就忽略了 它不需要记录未回应请求的名单 而是在发送的数据包中编码
  • java中两个list对象取交集、差集

    在一般操作中 对于list集合取交集 差集 并集 比较简单 网上有很多例子 如 今天我们来说一下对于两个list集合该如何取交集与并集 如下两个集合 groupEntityList saveEntities groupEntityList是
  • JS正则判断多个连续相同字符

    var reg1 w 1 1 g 判断2个连续字符 var reg2 w 1 2 g 判断3个连续字符 var reg3 w 1 1 g 判断3个连续字符 var str aa 123AaAaAAA3 str match reg1 输出 a
  • SpringBoot学习笔记(一):先跑懂再说

    一 Spring Boot 入门 1 Spring Boot 简介 简化Spring应用开发的一个框架 整个Spring技术栈的一个大整合 J2EE开发的一站式解决方案 2 Spring Boot HelloWorld 一个功能 浏览器发送
  • 怎么样才能开期权账户

    为了保护投资者权益 上交所设定了50万的准入门槛 挡着了很多想入手期权交易的小伙伴 如果资金不够50万 那么有什么办法能零门槛参与期权呢 下文给大家介绍怎么样才能开期权账户的知识点 本文来自 期权酱 一 期权开户要什么条件 1 申请开户时保
  • android webview setwebviewclient,android – setWebViewClient和setWebChromeClient之间有什么区别?...

    从 source code Instance of WebViewClient that is the client callback private volatile WebViewClient mWebViewClient Instan
  • OpenCSV web下载csv文件demo

    OpenCSV web下载csv文件demo pom xml
  • 嵌入式Linux&Android开发-LCD屏幕调试

    目录 一 简介 二 开发流程 三 硬件说明 四 电子特性 五 关注启动时序 六 关注引脚 七 屏参适配 7 1 DTS 驱动配置 7 2 屏参配置 案例一 7 3屏参配置 案例二 7 4 屏参配置 案例三 7 5 屏参配置 案例四 7 6
  • 单元测试、集成测试、系统测试、验收测试

    本文是按照开发阶段划分测试技术 单元测试 单元测试是对软件组成单元进行测试 目的是检验软件基本组成单元的正确性 测试对象是软件设计的最小单位 模块 又称为模块测试 单元测试的实质是代码测代码 测试阶段 编码后或者编码前 TDD 编码前属于测
  • 树莓派笔记4:树莓派游戏机

    这次记录比较轻松的内容 将树莓派做成 游戏主机 当然这个主机只是具备模拟器功能而已 可以模拟街机 FC等平台上的游戏 最早要在树莓派上玩模拟器游戏需要手动安装和配置不同的模拟器 而现在国外很多爱好者专门制作了定制化的系统 直接把系统烧到树莓
  • latex插图\begin{minipage}强制左移\hspace命令

    事情是这样的 我在latex中插图 上面一张图是排列整整齐齐的图片 下面一张图就是我绘制的概率密度图 在使用latex插图的时候 因为概率密度图的纵坐标是有title的 所以会显得不整齐 如下图所示 在includegraphics前面添加
  • Inkscape 捕捉图标翻译

  • Docker Portainer 安装与报错处理

    安装docker 管理器 Portainer 最近在看spring cloud alibaba的时候 觉得docker是肯定要用的 然后找了个管理的docker的东东 比较方便的查询docker的情况 直接看操作吧 root localho
  • 分布式锁之redis实现

    docker安装redis 拉取镜像 docker pull redis 6 2 6 查看镜像 启动容器并挂载目录 需要挂在的data和redis conf自行创建即可 docker run restart always d v usr l
  • python字符串的常用方法(3-2)

    目录 一 字符串find 和index 获取某个值的位置方法 二 字符串strip lstrip rstrip左右去空格方法 三 字符串的replace 替换方法 四 字符串bool集合 一 字符串find 和index 获取某个值的位置方