Programa de Python para dividir unió caracteres similares consecutivos

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

Deja una respuesta

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