Python: Integer in Strings sortieren?

1 Antwort

Von Experte ralphdieter bestätigt
dann wird es nicht richtig sortiert

Es wird schon richtig sortiert, die Dateinamen sind halt falsch :-)

Du kannst den Sortierfunktionen eine Funktion übergeben, die das "Sortierobjekt" liefert. In diesem Fall musst du also irgendwie die Zahl aus dem Namen extrahieren. Das ginge z.B. so mit einer Regex:

zahl = int(re.search(r'\d+', 'Code-10.txt').group())

Daraus kann man nun ein Lambda machen (eine normale Funktion ginge auch, aber so sparen wir uns eine teure Bildschirmzeile...):

extract_num = lambda s: int(re.search(r'\d+', s).group())

Und dann für .sort() oder sorted() verwenden:

names.sort(key=extract_num)