Python根据内嵌的数字将字符串来排序

有的时候,我们需要将字符串来排序,而该字符串又是有一定规律的,比如上面嵌套了数字,如"file2.txt file11.txt file8.txt file5.txt"排列成"file2.txt file5.txt file8.txt file11.txt",因为Python默认的字符串排序是基于字符ASCII来排序的,一般file11.txt是在file2.txt,如果要实现上面的需求,要如何处理呢?

import re

re_digits = re.compile(r'(\d+)')

def embedded_numbers(s):
    pieces = re_digits.split(s)                 # 切成数字和非数字
    pieces[1::2] = map(int, pieces[1::2])       # 将数字部分转成整数
    return pieces

def sort_string(lst):
    return sorted(lst, key=embedded_numbers)    # 将前面的函数作为key来排序

files = "file2.txt file8.txt file11.txt file5.txt"
files = files.split(' ')

print(' '.join(sort_string(files)))

使用了上面的处理后,就可以将内嵌的数字进行排序了。 排列的结果就是我们想要的了。

>>> file2.txt file5.txt file8.txt file11.txt
>>> 

猜你喜欢

转载自blog.csdn.net/jerry_1126/article/details/81157958