在Python字符串中查找所有子字符串出现的位置


字符串由字符组成,在代码中使用单引号或双引号初始化,子字符串也是字符串中存在的字符。Python是一种用途广泛的高级语言,用户易于理解。本文介绍了使用Python语言查找字符串中所有子字符串出现位置的各种方法。一些常用方法包括index()方法、in运算符、find()方法以及使用正则表达式方法。

在Python字符串中查找所有子字符串出现的位置

子字符串是字符串的字符,下面解释了查找这些子字符串的方法。

语法

str.find(substr, initial, final)

使用find()函数给出要搜索的字符串str。此函数具有三个参数:子字符串、字符串的初始值(为0)以及最终值(可以根据字符串的长度而定)。

方法

方法1 - 使用try和except方法

方法2 - 使用“re”正则表达式

方法1:使用try和except方法打印子字符串所有出现位置的Python程序

初始化输入字符串,使用index()方法迭代每个未找到的子字符串,引发ValueError,并在except块中打印语句。

算法

  • 步骤1 - 将变量定义为“Hello Welcome to Tutorialspoint”。

  • 步骤2 - 将子字符串变量定义为“l”、“z”和“e”。

  • 步骤3 - 使用index()方法查找从初始索引开始的字符串中子字符串的第一次出现。

  • 步骤4 - 使用for循环迭代字符串,当子字符串存在于字符串中时,打印“所有字符串都找到”语句。

  • 步骤5 - 当子字符串不存在于字符串中时,打印“并非所有字符串都找到”语句。

  • 步骤6 - 使用try和except方法,检查字符串中子字符串的所有可能出现位置。

  • 步骤7 - 运行以下代码时,将返回输出。

示例

#initializing the string
num = "Hello welcome to India" 

#to find the occurrence of the substring ‘l’, ‘z’, ‘e’ is initialized as substr
substr = ["l", "z", "e"] 
#trying to find the substrings using index() method
try:
   for sub in substr:
      num.index(sub)
   #this statement is printed when the substring is present in the input string
   print("All substrings found!") 
except ValueError:
   #this statement is printed when the substring is not present in the input string
   print("substrings are not found!") 

输出

substrings are not found!

方法2:使用“re”正则表达式打印子字符串所有出现位置的Python程序

创建正则表达式模式以将所有子字符串列表与输入字符串匹配。然后,使用re Python库中的findall()函数查找字符串的所有出现位置。如果匹配次数等于子字符串列表的长度,则此表达式返回true,否则返回false。

算法

  • 步骤1 - 导入所需的模块作为“re”库,并定义名为all_substrings_present()的函数。

  • 步骤2 - 使用已导入的“re”库使用findall()函数检查子字符串。

  • 步骤3 - 当子字符串与字符串匹配时,定义的函数返回“true”,否则返回“false”。

  • 步骤4 - 将名为input_str的字符串初始化为“Hello welcome to India”,其中包含一组字符串,并在下一条语句中初始化子字符串。

  • 步骤5 - 使用if-else语句验证子字符串是否存在于input_str中。

  • 步骤6 - 最后,根据条件返回打印语句。

示例

#importing the “re” module
import re
#defining the function with two parameters as input string and substring
def strfind(input_str, substr_list):
   # Regular expression is created and initialized as a shape
   shape = "(?=.*" + ")(?=.*".join(substr_list) + ").*"
   #using the findall() function to check for the characters in the string
   matches = re.findall(shape, input_str)

   # when the substrings are matched with the strings it returns true else false
   return len(matches) == 1
#initializing the string 
input_str = "Hello welcome to India"
#initializing the characters that need to be found in the input string
substr_list = ["l", "c", "e"]

#To check using the if else statement 
if strfind(input_str, substr_list):
#when the characters are matched this statement is printed.
   print("All substrings found!")
else:
#when the characters are not matched this statement is printed.
   print("Not all substrings found.")

输出

All substrings found!

结论

程序员可以处理字符串,但是处理子字符串会导致一些复杂的问题。通过使用各种方法,我们可以找到给定输入字符字符串中子字符串的所有出现位置。输出根据字符串值的匹配返回。

更新于:2023年8月25日

4K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告