Verwenden ein regulärer Ausdruck die Anzahl ziehen aus der Zeichenfolge und Cast zu Int:
import re
r = re.compile("\d+")
l = my_list= ['image101.jpg', 'image2.jpg', 'image1.jpg']
l.sort(key=lambda x: int(r.search(x).group()))
Oder vielleicht eine spezifischere regex einschließlich der .
verwenden:
import re
r = re.compile("(\d+)\.")
l = my_list= ['image101.jpg', 'image2.jpg', 'image1.jpg']
l.sort(key=lambda x: int(r.search(x).group()))
beide die gleiche Ausgabe für Sie zB Eingang geben:
['image1.jpg', 'image2.jpg', 'image101.jpg']
Wenn Sie sicher, dass der Erweiterung sind Sie kann einen sehr spezifischen Regex verwenden:
r = re.compile("(\d+)\.jpg$")
l.sort(key=lambda x: int(r.search(x).group(1)))
'sortiert (my_list, key = lambda x: int (re.search (r '\ d + (= \.) ', x) .group())) ' –