import re
def tryint(s):
try:
return int(s)
except ValueError:
return s
def alphanum_key(s):
return [tryint(c) for c in re.split('([0-9]+)', s)]
def sort_nicely(l):
return sorted(l, key=alphanum_key)
files = ["1card.txt", "card.txt" , "3card.txt", "52card.txt", "badcard.txt"]
def nat_sort(s):
'''
provides a sort mechanism for strings that may or
may not lead with an integer
'''
for i, c in enumerate(s):
if not c.isdigit():
break
if not i:
return 0, s
else:
return int(s[:i]), s[i:]
files.sort(key=nat_sort)
现在files是一个排序列表:
^{pr2}$
要将相似的字母排列在一起,请按上述方法进行操作:
def nat_sort(s):
'''
provides a sort mechanism for strings that may or
may not lead with an integer, but groups by strings
starting after integers, if any
'''
for i, c in enumerate(s):
if not c.isdigit():
break
if not i:
return s, 0
else:
return s[i:], int(s[:i])
files.sort(key=nat_sort)
怎么样:
然后你可以:
^{pr2}$没有正则表达式的简单解决方案可以是:
现在
^{pr2}$files
是一个排序列表:要将相似的字母排列在一起,请按上述方法进行操作:
现在文件返回:
^{pr2}$相关问题 更多 >
编程相关推荐