在Python中查找子字符串索引的5种方法

在Python中查找字符串中子字符串索引的5种方法 (5 Ways to Find the Index of a Substring in Strings in Python)

  1. str.find()

    str.find()

  2. str.rfind()

    str.rfind()

  3. str.index()

    str.index()

  4. str.rindex()

    str.rindex()

  5. re.search()

    re.search()

str.find() (str.find())

str.find() returns the lowest index in the string where the substring sub is found within the slice s[start:end]. It returns -1 if the sub is not found.start and end are optional arguments.

str.find()返回在切片s[start:end]找到子字符串sub的字符串中的最低索引。 如果找不到该子项,则返回-1startend是可选参数。

str.find(sub,start,end)

例子1.使用str.find()方法 (Example 1. Using str.find() method)

Image for post
Photo by the author
作者照片

The string is banana.

线是banana

The substring is an.

该子是an

The substring occurs two times in the string.

子字符串在字符串中出现两次。

str.find(“an”) returns the lowest index of the substring an.

str.find(“an”)返回子字符串an的最低索引。

s1="banana"print (s1.find("an"))#Output:1

例子2.使用str.find()方法和提到的start参数 (Example 2. Using str.find() method with the start parameter mentioned)

The substring is an.

该子是an

The start parameter is 2. It will start searching the substring an from index 2.

起始参数为2 。 它将开始从索引2搜索子字符串an

s1="banana"print (s1.find("an",2))#Output:3

例子3.如果没有找到子字符串,它将返回-1 (Example 3. If the substring is not found, it will return -1)

The substring is ba.

子字符串是ba

The start parameter is 1 and the stop parameter is 5. It will start searching the substring from index 1 to index 5 (excluded).

起始参数为1 ,终止参数为5 。 它将开始搜索从索引1到索引5(不包括)的子字符串。

Since the substring is not found in the string within the given index, it returns -1.

由于在给定索引的字符串中找不到子字符串,因此它返回-1

s1="banana"print (s1.find("ba",1,5))#Output:-1

2. str.rfind() (2. str.rfind())

str.rfind() returns the highest index in the string where the substring sub is found within the slice s[start:end]. It returns -1 if the sub is not found.start and end are optional arguments.

str.rfind()返回在slice s[start:end]找到子字符串sub的字符串中的最高索引。 如果找不到该子项,则返回-1startend是可选参数。

str.rfind(sub,start,end)

例子1.使用str.rfind()方法 (Example 1. Using str.rfind() method)

Image for post
Photo by the author
作者照片

The string is banana.

线是banana

The substring is an.

该子是an

The substring occurs two times in the string.

子字符串在字符串中出现两次。

str.find(“an”) returns the highest index of the substring an.

str.find(“an”)返回子字符串an的最高索引。

s1="banana"print (s1.rfind("an"))#Output:3

例子2.使用str.rfind()方法并提到开始和结束参数 (Example 2. Using str.rfind() method with the start and end parameters mentioned)

The substring is an.

该子是an

The start and end parameters are 1 and 4, respectively. It will start searching the substring from index 1 and index 4 (excluded).

startend参数分别为14 。 它将开始从索引1和索引4(排除)中搜索子字符串。

s1="banana"print (s1.rfind("an",1,4))#Output:1

例子3.如果没有找到子字符串,它将返回-1 (Example 3. If the substring is not found, it will return -1)

The substring is no.

子字符串为no

Since the substring is not found in the string, it returns -1.

由于在字符串中找不到子字符串,因此它返回-1

s1="banana"print (s1.rfind("no"))#Output:-1

3. str.index() (3. str.index())

Similarly to find(), str.index() returns the lowest index of the substring found in the string. It raises a ValueError when the substring is not found.

find()类似, str.index()返回 字符串中找到的子字符串的最低索引。 当找不到子字符串时,它将引发ValueError

例子1.使用str.index()方法 (Example 1. Using str.index() method)

s1="banana"print (s1.index("an"))#Output:1

例子2.在给定start和end参数的情况下使用str.index()方法 (Example 2. Using str.index() method with the start and end parameters given)

s1="banana"print (s1.index("an",2,6))#Output:3

例子3.如果没有找到子字符串,它将引发一个ValueError (Example 3. If the substring is not found, it raises a ValueError)

s1="banana"print (s1.index("no"))#Output:ValueError: substring not found

4. str.rindex() (4. str.rindex())

Similarly to find(), str.rindex() returns the highest index of the substring found in the string. It raises a ValueError when the substring is not found.

find()类似, str.rindex()返回在字符串中找到的子字符串的最高索引。 当找不到子字符串时,它将引发ValueError

例子1.使用str.rindex()方法 (Example 1. Using str.rindex() method)

s1="banana"print (s1.rindex("an"))#Output:3

例子2.在给定start和end参数的情况下使用str.index()方法 (Example 2. Using str.index() method with the start and end parameters given)

s1="banana"print (s1.rindex("an",0,4))#Output:1

例子3.如果没有找到子字符串,它将引发一个ValueError (Example 3. If the substring is not found, it raises a ValueError)

s1="banana"print (s1.rindex("no"))#Output:ValueError: substring not found

5. re.search() (5. re.search())

re.search(pattern, string, flags=0)

“Scan through string looking for the first location where the regular expression pattern produces a match, and return a corresponding match object. Return None if no position in the string matches the pattern; note that this is different from finding a zero-length match at some point in the string.” — Python’s official documentation

“扫描字符串以查找正则表达式模式产生匹配项的第一个位置,然后返回相应的匹配对象。 如果字符串中没有位置与模式匹配,则返回None否则,返回None 。 请注意,这不同于在字符串中的某个位置找到零长度匹配。” — Python的官方文档

  • re.search (pattern, string): We have to mention the pattern to be searched in the string.

    re.search (模式,字符串):我们不得不提一下pattern中要搜索string

  • The return type matches the object that contains the starting and ending index of that pattern (substring).

    返回类型与包含该模式(子字符串)的开始和结束索引的对象匹配。
  • We can find the start and end indices from the match object using match.start() and match.end().

    我们可以使用match.start()match.end()从match对象中找到startend索引。

Match.start([group])Match.end([group])

“Return the indices of the start and end of the substring matched by group; group defaults to zero (meaning the whole matched substring). Return -1 if group exists but did not contribute to the match.” — Python’s documentation

“返回分组匹配的子字符串的开始和结束的索引; 默认为零(表示整个匹配的子字符串)。 如果存在但没有参与比赛,则返回-1 。” — Python的文档

  • We can get the start and end indices in tuple format using match.span().

    我们可以使用match.span()获得元组格式的startend索引。

Match.span([group])

“For a match m, return the 2-tuple (m.start(group), m.end(group)). Note that if group did not contribute to the match, this is (-1, -1). group defaults to zero, the entire match.” — Python’s documentation

“对于匹配项m ,返回2元组(m.start(group), m.end(group)) 。 请注意,如果group对匹配没有贡献,则为(-1, -1)默认为零,即整个匹配。” — Python的文档

例子1.使用re.search() (Example 1. Using re.search())

示例2.如果在字符串中未找到子字符串,则返回None (Example 2. If a substring is not found in the string, it returns None)

import re
string = 'banana'pattern = 'no'match=(re.search(pattern, string))#Returns match objectprint (match)#Output: None

结论 (Conclusion)

  • Python 3.8.1 is used.

    使用Python 3.8.1。
  • str.find(), str.rfind() — Returns -1 when a substring is not found.

    str.find()str.rfind() —在找不到子字符串时返回-1

  • str.index(),str.rindex() — Raises a ValueError when a substring is not found.

    str.index()str.rindex() —在找不到子字符串时引发ValueError

  • re.search() — Returns None when a substring is not found.

    re.search() —如果找不到子字符串,则返回None

  • str.find(), str,index() — Returns the lowest index of the substring.

    str.find()str,index() —返回子字符串的最低索引。

  • str.rfind(), str.rindex() — Returns the highest index of the substring.

    str.rfind()str.rindex() —返回子字符串的最高索引。

  • re.search() — Returns the match object that contains the starting and ending indices of the substring.

    re.search() —返回包含子字符串的开始和结束索引的匹配对象。

资源(Python文档) (Resources (Python Documentation))

  • str.find

    查找

  • str.index

    指数

  • str.rfind

    查找

  • str.rindex

    索引

  • re.search

    研究

  • match-objects

    匹配对象

翻译自: https://medium.com/better-programming/5-ways-to-find-the-index-of-a-substring-in-python-13d5293fc76d

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 插件开发 向导

阅读目录 最近由于特殊需要,开始学习插件开发。   下面就直接弄一个简单的插件吧!   1 新建一个插件工程   2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突。   3 下一步,进…

线性回归 假设_线性回归的假设

线性回归 假设Linear Regression is the bicycle of regression models. It’s simple yet incredibly useful. It can be used in a variety of domains. It has a nice closed formed solution, which makes model training a super-fast non-iterative process.线性回归是回…

solo

solo - 必应词典 美[soʊloʊ]英[səʊləʊ]n.【乐】独奏(曲);独唱(曲);单人舞;单独表演adj.独唱[奏]的;单独的;单人的v.独奏;放单飞adv.独网络梭罗;独奏曲;索罗变形复数&#xff1…

Eclipse 简介和插件开发天气预报

Eclipse 简介和插件开发 Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是 Eclipse 已经超越了开发环境的概念,可以…

趣味数据故事_坏数据的好故事

趣味数据故事Meet Julia. She’s a data engineer. Julia is responsible for ensuring that your data warehouses and lakes don’t turn into data swamps, and that, generally speaking, your data pipelines are in good working order.中号 EETJulia。 她是一名数据工程…

Linux 4.1内核热补丁成功实践

最开始公司运维同学反馈,个别宿主机上存在进程CPU峰值使用率异常的现象。而数万台机器中只出现了几例,也就是说万分之几的概率。监控产生的些小误差,不会造成宕机等严重后果,很容易就此被忽略了。但我们考虑到这个异常转瞬即逝、并…

python分句_Python循环中的分句,继续和其他子句

python分句Python中的循环 (Loops in Python) for loop for循环 while loop while循环 Let’s learn how to use control statements like break, continue, and else clauses in the for loop and the while loop.让我们学习如何在for循环和while循环中使用诸如break &#xf…

eclipse plugin 菜单

简介: 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包括主菜单(Main Menu),视图 / 编辑器菜单(ViewPart/Editor Menu)和上下文菜单&am…

python数据建模数据集_Python中的数据集

python数据建模数据集There are useful Python packages that allow loading publicly available datasets with just a few lines of code. In this post, we will look at 5 packages that give instant access to a range of datasets. For each package, we will look at h…

打开editor的接口讨论

【打开editor的接口讨论】 先来看一下workbench吧,workbench从静态划分应该大致如下: 从结构图我们大致就可以猜测出来,workbench page作为一个IWorkbenchPart(无论是eidtor part还是view part&#…

网络攻防技术实验五

2018-10-23 实验五 学 号201521450005 中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验五 综合渗透 学生姓名 陈军 年级 2015 区队 五 指导教师 高见 信息技术与网络安全学院 2018年10月23日 实验任务总纲 2018—2019 …

usgs地震记录如何下载_用大叶草绘制USGS地震数据

usgs地震记录如何下载One of the many services provided by the US Geological Survey (USGS) is the monitoring and tracking of seismological events worldwide. I recently stumbled upon their earthquake datasets provided at the website below.美国地质调查局(USGS)…

Springboot 项目中 xml文件读取yml 配置文件

2019独角兽企业重金招聘Python工程师标准>>> 在xml文件中读取yml文件即可&#xff0c;代码如下&#xff1a; 现在spring-boot提倡零配置&#xff0c;但是的如果要集成老的spring的项目&#xff0c;涉及到的bean的配置。 <bean id"yamlProperties" clas…

无法获取 vmci 驱动程序版本: 句柄无效

https://jingyan.baidu.com/article/a3a3f811ea5d2a8da2eb8aa1.html 将 vmci0.present "TURE" 改为 “FALSE”; 转载于:https://www.cnblogs.com/limanjihe/p/9868462.html

数据可视化 信息可视化_更好的数据可视化的8个技巧

数据可视化 信息可视化Ggplot is R’s premier data visualization package. Its popularity can likely be attributed to its ease of use — with just a few lines of code you are able to produce great visualizations. This is especially great for beginners who are…

分布式定时任务框架Elastic-Job的使用

为什么80%的码农都做不了架构师&#xff1f;>>> 一、前言 Elastic-Job是一个优秀的分布式作业调度框架。 Elastic-Job是一个分布式调度解决方案&#xff0c;由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 Elastic-Job-Lite定位为轻量级无中心化…

Memcached和Redis

Memcached和Redis作为两种Inmemory的key-value数据库&#xff0c;在设计和思想方面有着很多共通的地方&#xff0c;功能和应用方面在很多场合下(作为分布式缓存服务器使用等) 也很相似&#xff0c;在这里把两者放在一起做一下对比的介绍 基本架构和思想 首先简单介绍一下两者的…

第4章 springboot热部署 4-1 SpringBoot 使用devtools进行热部署

/imooc-springboot-starter/src/main/resources/application.properties #关闭缓存, 即时刷新 #spring.freemarker.cachefalse spring.thymeleaf.cachetrue#热部署生效 spring.devtools.restart.enabledtrue #设置重启的目录,添加那个目录的文件需要restart spring.devtools.r…

ibm python db_使用IBM HR Analytics数据集中的示例的Python独立性卡方检验

ibm python dbSuppose you are exploring a dataset and you want to examine if two categorical variables are dependent on each other.假设您正在探索一个数据集&#xff0c;并且想要检查两个分类变量是否相互依赖。 The motivation could be a better understanding of …

sql 左联接 全联接_通过了解自我联接将您SQL技能提升到一个新的水平

sql 左联接 全联接The last couple of blogs that I have written have been great for beginners ( Data Concepts Without Learning To Code or Developing A Data Scientist’s Mindset). But, I would really like to push myself to create content for other members of …