Python | Obtenga el índice inicial para todas las ocurrencias de una substring dada

Dada una string y una substring, la tarea de encontrar el índice inicial para todas las apariciones de una substring dada en una string. Analicemos algunos métodos para resolver la tarea dada.

Método n.º 1: uso del método ingenuo

# Python3 code to demonstrate
# to find all occurrences of substring in
# a string
  
# Initialising string
ini_string = 'xbzefdgstbzefzexezef'
  
# Initialising sub-string
sub_string = 'zef'
  
# Printing initial string and sub-string
print ("initial_strings : ", ini_string, "\nsubstring : ", sub_string)
  
res = []
flag = 0
k = 0
  
# Finding all occurrences of substring
# in a string using Naive method
for i in range(0, len(ini_string)):
    k = i
    flag = 0
    for j in range(0, len(sub_string)):
        if ini_string[k] != sub_string[j]:
            flag = 1
        if flag:
            break
        k = k + 1
    if flag == 0:
        res.append(i)
  
  
# printing result(
print ("resultant positions", str(res))
Producción:

initial_strings :  xbzefdgstbzefzexezef 
substring :  zef
resultant positions [2, 10, 17]

&nsbp;
Método #2: Usar la comprensión de listas

# Python3 code to demonstrate
# to find all occurrences of substring in
# a string
  
# Initialising string
ini_string = 'xbzefdgstbzefzexezef'
  
# Initialising sub-string
sub_string = 'zef'
  
# Printing initial string and sub-string
print ("initial_strings : ", ini_string, "\nsubstring : ", sub_string)
  
res = []
# Finding all occurrences of substring
# in a string using list comprehension
res = [i for i in range(len(ini_string)) 
       if ini_string.startswith(sub_string, i)]
  
# printing result(
print ("resultant positions", str(res))
Producción:

initial_strings :  xbzefdgstbzefzexezef 
substring :  zef
resultant positions [2, 10, 17]

 
Método #3: Usar expresiones regulares

# Python3 code to demonstrate
# to find all occurrences of substring in
# a string
import re
  
# Initialising string
ini_string = 'xbzefdgstbzefzexezef'
  
# Initialising sub-string
sub_string = 'zef'
  
# Printing initial string and sub-string
print ("initial_strings : ", ini_string, "\nsubstring : ", sub_string)
  
res = []
# Finding all occurrences of substring
# in a string using re.finditer
res = [m.start() for m in re.finditer(sub_string, ini_string)]
  
# printing result(
print ("resultant positions", str(res))
Producción:

initial_strings :  xbzefdgstbzefzexezef 
substring :  zef
resultant positions [2, 10, 17]

Publicación traducida automáticamente

Artículo escrito por garg_ak0109 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *