Python: Integer in Strings sortieren?
Wenn ich eine Liste mit os.listdir() erstelle und dann sortiere dann wird es nicht richtig sortiert weil es als Strings sortiert wird z.B.: ["Code-1.txt,"Code-10.txt","Code-11.txt"]... Statt: ["Code-1.txt","Code-2.txt","Code-3.txt"]... Wie kann ich die Liste so sortieren dass es nach Integern sortiert wird und nicht nach Strings?
1 Antwort
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)