Python: expandir la string de frecuencia de caracteres

Dada una string, cuyo carácter seguido de su frecuencia, cree la string apropiada.

Ejemplos:

Entrada : test_str = ‘g7f2g3i2s2b3e4’ 
Salida : gggggggffgggiissbbbeeee 
Explicación : g es seguida por 7 y repetida 7 veces.

Entrada : test_str = ‘g1f1g1’ 
Salida : gfg 
Explicación : f es seguida por 1 y repetida 1 vez. 

Método #1: Usando zip() + join()

Esta es una de las formas en que se puede realizar esta tarea. En esto, la tarea de unir los caracteres apropiados se realiza usando join() y zip() se usa para convertir diferentes strings de caracteres y frecuencias. El inconveniente es que la frecuencia de carácter está restringida a un número de 1 dígito en este.

Python3

# Python3 code to demonstrate working of
# Expand Character Frequency String
# Using join() + zip()
import re
 
# initializing string
test_str = 'g7f2g3i2s2b3e4s5t6'
 
# printing original string
print("The original string is : " + str(test_str))
 
# using zip() to pair up numbers and characters
# separately
res = "".join(a *int(b) for a, b in zip(test_str[0::2], test_str[1::2]))
 
# printing result
print("The expanded string : " + str(res))
Producción

The original string is : g7f2g3i2s2b3e4s5t6
The expanded string : gggggggffgggiissbbbeeeessssstttttt

Método #2: Usando regex() + join()

Esta es otra forma más en la que se puede realizar esta tarea. En esta tarea de emparejar números y caracteres a diferentes strings se realiza usando regex() y la ventaja es que puede tomar números con dígitos mayores a 2.

Python3

# Python3 code to demonstrate working of
# Expand Character Frequency String
# Using regex() + join()
import re
 
# initializing string
test_str = 'g7f2g3i2s2b3e4s5t10'
 
# printing original string
print("The original string is : " + str(test_str))
 
# using findall to pair up numbers and characters
# separately, can include longer digit strings
res = ''.join(chr * int(num or 1)
              for chr, num in re.findall(r'(\w)(\d+)?', test_str))
 
# printing result
print("The expanded string : " + str(res))
Producción

The original string is : g7f2g3i2s2b3e4s5t10
The expanded string : gggggggffgggiissbbbeeeessssstttttttttt

Método #3: Sin usar ningún método incorporado

Python3

# Python3 code to demonstrate working of
# Expand Character Frequency String
 
# initializing string
test_str = 'g7f2g3i2s2b3e4s5t6'
 
# printing original string
print("The original string is : " + str(test_str))
character=[]
frequency=[]
for i in range(0,len(test_str)):
    if(i%2==0):
        character.append(test_str[i])
    else:
        frequency.append(int(test_str[i]))
res=""
for i in range(0,len(character)):
    res+=character[i]*frequency[i]
# printing result
print("The expanded string : " + str(res))
Producción

The original string is : g7f2g3i2s2b3e4s5t6
The expanded string : gggggggffgggiissbbbeeeessssstttttt

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 *