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