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