A veces, mientras trabajamos con registros de Python, podemos tener el problema de que pueden aparecer en formato de nombre y número en strings. Estos pueden ser necesarios para ser ordenados. Este problema puede ocurrir en muchos dominios en los que están involucrados los datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Uso join() + split() + sorted()
de la comprensión de lista +
La combinación de las funciones anteriores se puede utilizar para realizar esta tarea. En esto, realizamos la tarea de ordenar usando sorted() y la tarea de extraer números usando split(). Realizamos la tarea de volver a unir la string ordenada usando join().
# Python3 code to demonstrate working of # Sort Numerical Records in String # Using join() + split() + sorted() + list comprehension # initializing string test_str = "Akshat 15 Nikhil 20 Akash 10" # printing original string print("The original string is : " + test_str) # Sort Numerical Records in String # Using join() + split() + sorted() + list comprehension temp1 = test_str.split() temp2 = [temp1[idx : idx + 2] for idx in range(0, len(temp1), 2)] temp3 = sorted(temp2, key = lambda ele: (int(ele[1]), ele[0])) res = ' '.join([' '.join(ele) for ele in temp3]) # printing result print("The string after sorting records : " + res)
The original string is : Akshat 15 Nikhil 20 Akash 10 The string after sorting records : Akash 10 Akshat 15 Nikhil 20
Método #2: Usando regex
Esta tarea también se puede realizar usando regex. Realizamos la tarea de encontrar el número usando expresiones regulares y la clasificación y unión del resto se realiza como el método anterior.
# Python3 code to demonstrate working of # Sort Numerical Records in String # Using regex import re # initializing string test_str = "Akshat 15 Nikhil 20 Akash 10" # printing original string print("The original string is : " + test_str) # Sort Numerical Records in String # Using regex temp1 = re.findall(r'([A-z]+) (\d+)', test_str) temp2 = sorted(temp1, key = lambda ele: (int(ele[1]), ele[0])) res = ' '.join(' '.join(ele) for ele in temp2) # printing result print("The string after sorting records : " + res)
The original string is : Akshat 15 Nikhil 20 Akash 10 The string after sorting records : Akash 10 Akshat 15 Nikhil 20
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