Programa de Python para convertir strings en filas numéricas de tamaño K

Dada una string de alfabetos, conviértala en filas numéricas de tamaño K, que contiene el número que es el valor posicional de los caracteres.

Entrada : test_str = ‘geeksforgeek’, K = 4 
Salida : [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10]] 
Explicación : g está en el sexto posición en el alfabeto, por lo tanto g→ 6 y la string se divide después de cada cuarto carácter

Entrada : test_str = ‘geeksforgeek’, K = 3 
Salida : [[6, 4, 4], [10, 18, 5], [14, 17, 6], [4, 4, 10]] 
Explicación : g es en la sexta posición en el alfabeto, por lo tanto, g→ 6 y la string se divide después de cada tercer carácter
 

Método 1: Usar loop + index() 

En esto, realizamos una iteración de cada carácter usando un bucle y buscamos la posición requerida del carácter en los alfabetos usando index() en una lista de caracteres ordenados.  

Python3

# initializing string
test_str = 'geeksforgeekscse'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K
K = 4
  
alphabs = "abcdefghijklmnopqrstuvwxyz"
  
res = []
temp = []
for ele in test_str:
  
    # finding numerical position using index()
    temp.append(alphabs.index(ele))
  
    # regroup on K
    if len(temp) == K:
        res.append(temp)
        temp = []
  
# appending remaining characters
if temp != []:
    res.append(temp)
  
# printing result
print("Grouped and Converted String : " + str(res))

Producción:

La string original es: geeksforgeekscse String
agrupada y convertida: [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4 ]]

Método #2: Usar ljust() + ord() + comprensión de lista

En esto, realizamos la tarea de relleno necesario para tener filas de igual longitud usando ljust() , luego obtenemos posiciones alfabéticas numéricas usando ord() , la comprensión de la lista con corte ayuda a convertir la lista en una array K fragmentada.

Python3

from math import ceil
  
# initializing string
test_str = 'geeksforgeekscse'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K
K = 4
  
# filling the rear to K size rows
temp = test_str.ljust(ceil(len(test_str) / K) * K)
  
# convert to numerical characters
temp = [0 if char == ' ' else (ord(char) - 97) for char in temp]
  
# slice and render to matrix
res = [temp[idx: idx + K] for idx in range(0, len(temp), K)]
  
# printing result
print("Grouped and Converted String : " + str(res))

Producción:

La string original es: geeksforgeekscse String
agrupada y convertida: [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4 ]]

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 *