如何在 Python 中正确排序带有数字的字符串?
你希望根据字符串中的数字进行排序的这种排序类型称为自然排序或人性化排序。例如,如果你有以下文本
['Hello1','Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
然后你希望排序后的列表是
['Hello1', 'Hello2','Hello12', 'Hello17', 'Hello25', 'Hello29']
而不是
['Hello1','Hello12', 'Hello17', 'Hello2', 'Hello25', 'Hello29']
为此,我们可以使用 sort() 使用的额外参数。这是一个函数,用于根据列表中的条目计算键。我们使用正则表达式从字符串中提取数字,并在文本和数字上进行排序。
import re
def atoi(text):
return int(text) if text.isdigit() elsetext
def natural_keys(text):
return [ atoi(c) for c in re.split('(\d+)',text) ]
my_list =['Hello1', 'Hello12', 'Hello29', 'Hello2', 'Hello17', 'Hello25']
my_list.sort(key=natural_keys)
print my_list这会为你提供以下输出
['Hello1','Hello2', 'Hello12', 'Hello17', 'Hello25', 'Hello29']
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP