📌  相关文章
📜  Python|对字符串中的数字记录进行排序

📅  最后修改于: 2022-05-13 01:55:29.450000             🧑  作者: Mango

Python|对字符串中的数字记录进行排序

有时,在处理Python记录时,我们可能会遇到问题,即它们可能以字符串中的名称和数字格式出现。这些可能需要排序。在涉及数据的许多领域中都可能出现此问题。让我们讨论可以执行此任务的某些方式。

方法 #1:使用join() + split() + sorted() + 列表理解
上述功能的组合可用于执行此任务。在此,我们使用 sorted() 执行排序任务,使用 split() 执行提取数字任务。我们使用 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

方法#2:使用正则表达式
此任务也可以使用正则表达式执行。我们使用正则表达式执行查找数字的任务,其余排序和连接按上述方法执行。

# 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