Dada una string, nuestra tarea es escribir un programa de Python para dividir en la aparición de un carácter no similar.
Entrada: test_str = ‘ggggffggisssbbbeessssstt’
Salida: [‘gggg’, ‘ff’, ‘gg’, ‘i’, ‘sss’, ‘bbb’, ‘ee’, ‘sssss’, ‘tt’]
Explicación : todos los caracteres consecutivos similares se convierten en strings separadas.
Entrada: test_str = ‘ggggffgg’
Salida: [‘gggg’, ‘ff’, ‘gg’]
Explicación : todos los caracteres consecutivos similares se convierten en strings separadas.
Método #1: Usar join() + comprensión de lista + groupby()
En esto, los caracteres se agrupan en similitud usando groupby(), join() se usa para reformar la lista de strings. La comprensión de listas realiza la tarea de iterar grupos construidos.
Python3
# Python3 code to demonstrate working of # Split joined consecutive similar characters # Using join() + list comprehension + groupby() from itertools import groupby # initializing string test_str = 'ggggffggisssbbbeessssstt' # printing original string print("The original string is : " + str(test_str)) # groupby groups the elements, join joining Consecutive groups res = ["".join(group) for ele, group in groupby(test_str)] # printing result print("Consecutive split string is : " + str(res))
Producción:
La string original es: ggggffggisssbbbeessssstt
La string dividida consecutiva es: [‘gggg’, ‘ff’, ‘gg’, ‘i’, ‘sss’, ‘bbb’, ‘ee’, ‘sssss’, ‘tt’]
Método #2: Usar finditer() + expresiones regulares + comprensión de lista
En esto, regex se usa para verificar secuencias iguales consecutivas. El finditer() realiza la tarea de encontrar la expresión regular coincidente en una string.
Python3
# Python3 code to demonstrate working of # Split joined consecutive similar characters # Using finditer() + regex + list comprehension import re # initializing string test_str = 'ggggffggisssbbbeessssstt' # printing original string print("The original string is : " + str(test_str)) # list comprehension iterates for all the formed groups found by regex # if consecutive numbers need to search "d" can be used. res = [iters.group(0) for iters in re.finditer(r"(\D)\1*", test_str)] # printing result print("Consecutive split string is : " + str(res))
Producción:
La string original es: ggggffggisssbbbeessssstt
La string dividida consecutiva es: [‘gggg’, ‘ff’, ‘gg’, ‘i’, ‘sss’, ‘bbb’, ‘ee’, ‘sssss’, ‘tt’]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA