python之详解字符串

由字符组成的序列,可以用单引号或双引号括起来。

1、通过下标获取字符串的字符

1.1、获取单个字符

若要获取字符串中某一个字符,可以通过 字符串名[index] 索引下标的方式获取。

索引的初始值为0,最大值为字符串长度-1。

切记,索引值不能超过字符串长度-1,否则会报错。

str1 = "My name is sony"
#获取长度
length_str1 = len(str1)
print(length_str1)
#获取第一个字符
first_index = str1[0]
print(first_index)
#反方向取最后一个字符
last_index = str1[-1]
print(last_index)

字符串的下标可为正,也可为负。并且,符号只是取字符方向的不同,正数从头开始取,负数从尾部开始取。

如:字符串:MyFStr

字符串MyFStr
012345
-6-5-4-3-2-1

1.2、获取多个字符

若要获取一个字符串中的一段字符,可使用切片进行获取。

切片的格式为:[起始位置:结束位置:步长]。且,切片的两个位置是前闭后开:[起始位置, 结束位置)

#切片
str1 = "This is an example"
#获取从2,5的字符串
str2 = str1[2:5:1]
print(str2)
str3 = str1[2:5]
print(str3)
#下标带负数的
str2 = str1[0:-7:]
print(str2)
#步长决定了取值方向
str2 = str1[-1:-7:-1]
print(str2)
str3 = str1[1:7:-1]
str4 = str1[7:1:-1]
print(str3)
print(str4)

起始位置和结束位置可为正,为负。步长的正负决定了取值的方向。取值方向与起始、结束位置有冲突,会导致最终的结果为空。

2、通过Python自带的字符串函数操作字符串

2.1、find和rfind

find:find(substring, start, end)

substring:待查找的子字符串。

start:开始查找的位置。(可选)

end:结束查找的位置。(可选)

结果:子字符串存在,返回第一个子字符串下标索引。子字符串不存之,返回-1。

示例:只输入待查找的子字符串。

str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.find(str2)
print(index_str1)

示例:带范围的查找。

#带范围的查找
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.find(str2,14)
print(index_str1)

示例:查找不到。

#查找不到
str1 = "My name is sony sony"
str2 = "lucky"
index_str1 = str1.find(str2)
print(index_str1)

rfind:类似于find,不过是从右向左查找。

示例:查找带有多个子字符串。

str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.rfind(str2)
print(index_str1)

2.2、index和rindex

index:类似于find方法。区别在于:当查找不到待查找子字符串时,会报错。

示例:

#index方法
str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.index(str2)
print(index_str1)
str2 = "lucky"
index_str1 = str1.index(str2)
print(index_str1)

rindex:类似于rfind。区别:查找不到会报错。

示例:

str1 = "My name is sony sony"
str2 = "sony"
index_str1 = str1.rindex(str2)
print(index_str1)
str2 = "lucky"
index_str1 = str1.rindex(str2)
print(index_str1)

2.3、startswith和endswith

startwith:判断是否以某个子字符串开头,返回值为布尔值。

示例:

str1 = "My name is sony sony"
str2 = "My"
print(str1.startswith(str2))
str2 = "sony"
print(str1.startswith(str2))

endwith:判断是否以某个子字符串结尾,返回值为布尔值。

示例:

str1 = "My name is sony sony"
str2 = "My"
print(str1.endswith(str2))
str2 = "sony"
print(str1.endswith(str2))

2.4、isalpha、isdigit、isalnum和isspace

isalpha:判断字符串是否全是字母。

示例:

str1 = "adadaafafa"
str2 = "12efafsaf"
print(str1.isalpha())
print(str2.isalpha())

isdigit:判断字符串是否全是数字。

示例:

str1 = "adadaafafa"
str2 = "12112414"
print(str1.isdigit())
print(str2.isdigit())

isalnum:判断字符串是否全是字母或数字。

示例:

str1 = "abcd1234"
str2 = "afafaf"
str3 = "1231"
print("1"+str(str1.isalnum()))
print("2"+str(str2.isalnum()))
print("3"+str(str3.isalnum()))

isspace:判断字符串是否全是空格。

示例:

str1 = " "
str2 = ""
str3 = "  12"
print("1"+str(str1.isspace()))
print("2"+str(str2.isspace()))
print("3"+str(str3.isspace()))

2.5、count

count:统计某个子字符串出现次数。

示例:

str1 = "My name is sony sony"
print(str1.count("sony"))

2.6、replace

replace:替换原字符串中的子字符串。

格式:replace(sub,new_sub,max).

sub:待替换子字符串。

new_sub:替换的新字符串。

max:最大替换个数。(可选)

结果:返回一个新字符串。

示例:

str1 = "My name is sony sony"
str2 = str1.replace("sony","new_sony")
str3 = str1.replace("sony","new_sony",1)
print(str2)
print(str3)

2.7、capitalize、title、lower和upper

capitalize:将字符串中的第一个字符大写。

示例:

str1 = "this is a test"
str2 = str1.capitalize()
print(str2)

title:将字符串的每个单词首字母大写。

示例:

str1 = "this is a test"
str2 = str1.title()
print(str2)

lower:将全部字符改为小写。

示例:

str1 = "THIS IS A TEST"
str2 = str1.lower()
print(str2)

upper:全部字符改为大写。

示例:

str1 = "THIS IS A TEST"
str2 = str1.lower()
str3 = str2.upper()
print(str3)

2.8、join方法

join:使用字符串来连接join函数中参数的每一个元素。

结果:返回一个新字符串。

示例:

str1 = "This is an example"
str2 = str1.join("--")
str3 = "--".join(str1)
print(str2)
print(str3)

2.9、split和splitlines

split:以给定的字符分割原字符串。

结果:无论给定的字符存不存在字符串中,都返回一个列表。

示例:

str1 = "Thisisanexample"
list1 = str1.split("is")
list2 = str1.split("hello")
print(list1)
print(list2)

splitlines:按照\n行分割字符串。

结果:返回一个列表。

示例:

str1 = "This\nis\nan\nexample"
str2 = "Thisisanexample"
list1 = str1.splitlines()
list2 = str2.splitlines()
print(list1)
print(list2)

2.10、 partition和rpartition

partition:按照给定的字符,将原字符串分为三部分。

结果:返回一个元组,并且无论有没有给定字符,一定有三部分。

示例:

str1 = "This is an example"
tuple1 = str1.partition("is")
tuple2 = str1.partition("hello")
print(tuple1)
print(tuple2)

2.11、strip、lstrip和rstrip

strip:去掉两边的空格或给定的字符串。

结果:返回一个新字符串。

示例:

str1 = "  This is an example"
str2 = str1.strip()
str3 = str1.strip("le")
print(str1)
print(str2)
print(str3)

lstrip和rstrip:去掉字符串左边和右边空格或给定的字符串。

结果:返回新字符串。

示例:

str1 = "  This is an example  "
print(str1)
print(str1.lstrip())
print(str1.rstrip())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、图解C#教程

一、堆和栈 程序运行时,数据存储在内存中。 使用堆和栈来存储数据 1、栈 栈是一个内存数组,先进后出原则。 可以存储:某些类型变量的值;程序当前执行环境;传递给方法的参数; 入栈:把数据放…

自动驾驶-问题笔记-待解决

参考线的平滑方法 参考线平滑算法主要有三种: 离散点平滑;螺旋曲线平滑;多项式平滑; 参考链接:参考线平滑 对于平滑方法,一直不太理解平滑、拟合以及滤波三者的作用与区别; 规划的起点&#x…

计算机网络——email

pop3拉出来 超出ASCII码范围就不让传了 这样就可以传更大的文件

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose(如果存在) sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…

JavaScript for循环语句

for循环 循环语句用于重复执行某个操作,for语句就是循环命令,可以指定循环的起点、终点和终止条件。它的格式如下 for(初始化表达式;条件;迭代因子){语句} for语句后面的括号里面,有三个表达式 初始化表达式(initialize):确定循环变量的初始…

[C语言]指针和数组

目录 1.数组的地址 2.通过指针访问数组 3.数组和指针的不同点 4.指针数组 1.数组的地址 数组的地址是什么&#xff1f; 看下面一组代码 #include <stdio.h> int main() { int arr[5] {5,4,3,2,1}; printf("&arr[0] %p\n", &arr[0]); printf(&qu…

LeetCode讲解篇之139. 单词拆分

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用一个数组记录字符串s在[0, i)区间能否使用wordDict组成 我们使用左右指针遍历字符串s的子串&#xff0c;左指针 j 为子串的左端点下标&#xff0c;右指针 i 为右端点下标的下一个 遍历过程中如果字符串s…

自然语言处理问答系统

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

字节放大招:无需LORA训练,小红书写真轻松搞定,Pulid-Flux换脸方案来了

前言 在这之前&#xff0c;SD常用的换脸节点还不支持Flux模型&#xff0c;使用Flux 做虚拟模特最好的方法是炼制人脸lora&#xff0c;但是炼丹是个有技术门槛的活。 之前文章有提过字节跳动的 Pulid团队&#xff0c;率先推出了Pulid-Flux模型&#xff0c;但是之前只能在线上使用…

【Redis】Hash类型的常用命令

背景&#xff1a;redis中存储数据采取key-value键值对的形式&#xff0c;而hash内部也是键值对&#xff0c;为了区别这两个东西&#xff0c;hash内部的键值对称为&#xff1a;field-value&#xff0c;而redis的为key-value&#xff0c;这里的value包括&#xff1a;field-value。…

Elasticsearch基础_5.ES聚合功能

文章目录 一、数据聚合1.1、桶聚合1.1.1、单维度桶聚合1.1.2、聚合结果排序1.1.3、限定聚合范围 1.2、Metric聚合 二、聚合总结 本文只记录ES聚合基本用法&#xff0c;后续有更复杂的需求可以查看相关书籍&#xff0c;如《Elasticsearch搜索引擎构建入门与实战》 一、数据聚合…

通过 Groovy 实现业务逻辑的动态变更

Groovy 1、需求的提出2、为什么是Groovy3、设计参考1_引入Maven依赖2_GroovyEngineUtils工具类3_GroovyScriptVar类4_脚本规则表设计5_对应的实体类6_数据库访问层7_GroovyExecService通用接口 4、测试5、其他的注意事项6、总结 1、需求的提出 在我们日常的开发过程中&#xf…

【机器学习】智驭未来:探索机器学习在食品生产中的革新之路

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#xff1a;探索机器学习在食品生产中的革新之路&#x1f4d2;2. 机器学习在食品质量控制中的应用&#x1f31e;实…

MySQL之复合查询与内外连接

目录 一、多表查询 二、自连接 三、子查询 四、合并查询 五、表的内连接和外连接 1、内连接 2、外连接 前面我们讲解的mysql表的查询都是对一张表进行查询&#xff0c;即数据的查询都是在某一时刻对一个表进行操作的。而在实际开发中&#xff0c;我们往往还需要对多个表…

15分钟学 Python 第41天:Python 爬虫入门(六)第二篇

Day41&#xff1a;Python爬取猫眼电影网站的电影信息 1. 项目背景 在本项目中&#xff0c;我们将使用 Python 爬虫技术从猫眼电影网站抓取电影信息。猫眼电影是一个知名的电影信息平台&#xff0c;提供了丰富的电影相关数据。通过这个练习&#xff0c;您将深入学习如何抓取动…

Android Compose的基本使用

前言: Compose这个东西呢,好处我没发现,坏处就是学习成本和低版本兼容. 不过,看在官方力推的份儿上,有空就学一下吧. 当初的kotlin,很多人说鸡肋(包括我)!现在不也咔咔用纯kotlin做项目吗?哈哈哈哈. 未来的事情,谁说得清呢? 首先创建一个专用的Compose项目 对没错!看到E…

大数据新视界 --大数据大厂之 从 Druid 和 Kafka 到 Polars:大数据处理工具的传承与创新

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【笔记】数据结构12

文章目录 2013年408应用题41方法一方法二 看到的社区的一个知识总结&#xff0c;这里记录一下。 知识点汇总 2013年408应用题41 解决方法&#xff1a; 方法一 &#xff08;1&#xff09;算法思想 算法的策略是从前向后扫描数组元素&#xff0c;标记出一个可能成为主元素的元…

elasticsearch ES DBA常用语句

一、 查看集群状态 curl -uelastic 连接串:端口/_cluster/health?pretty 集群健康有三种状态&#xff1a;green,yellow,red green&#xff1a;所有主要分片、复制分片都可用yellow&#xff1a;所有主要分片可用&#xff0c;但不是所有复制分片都可用red&#xff1a;不是所有…

根据拍摄时间一键将图片分组

说在前面 最近裸辞出去玩了两个多月&#xff0c;旅行的过程中少不了拍照&#xff0c;祖国的大好河山太美了&#xff0c;一趟旅行下来产出了1w多张图片&#xff0c;所以回来后总要整理一下图片&#xff0c;我这边想要的是根据拍摄时间来对图片进行分组,所以回到家后我就写了这样…