Python | Ordenar registros numéricos en string

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) 
Producción :

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) 
Producción :

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

Deja una respuesta

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