Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Zeichenfolgen mit eingebetteten Zahlen in Python auf natürliche Weise sortieren?
Natürliche Sortierung: Die Kunst, Zeichenfolgen mit eingebetteten Zahlen anzuordnen
Das Sortieren von Zeichenfolgen mit Zahlen kann eine knifflige Aufgabe sein, ist aber für viele unerlässlich Anwendungen. In dieser Frage-und-Antwort-Runde untersuchen wir eine Lösung, die menschenähnliche Sortierergebnisse erzielt und es Ihnen ermöglicht, Zeichenfolgen wie „etwas1“, „etwas2“ und „etwas17“ in einer logischen Reihenfolge anzuordnen.
Die Herausforderung:
Die gegebene Eingabe besteht aus einer Liste von Zeichenfolgen, die Zahlen enthalten. Die Standardmethode sort() schafft es jedoch nicht, sie so anzuordnen, dass sie für den Menschen sinnvoll sind. Beispielsweise würde die folgende Liste:
something1 something12 something17 something2 something25 something29
sortiert werden als:
something1 something12 something17 something2 something25 something29
Die Lösung: Natürliche Schlüssel
Die Lösung liegt bei der Verwendung natürlicher Schlüssel, einer Sortiermethode, die für die menschliche Lesbarkeit entwickelt wurde. Natürliche Schlüssel behandeln Zahlen innerhalb von Zeichenfolgen als separate Einheiten und behalten dabei die Gesamtstruktur der Zeichenfolge bei.
Hier ist eine Python-Implementierung mit der Funktion „natural_keys“:
import re def natural_keys(text): return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
Bei Anwendung auf die Eingabeliste wird die Das Ergebnis wäre:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Zusätzliche Überlegungen:
Wenn Wenn Sie Zeichenfolgen mit Gleitkommazahlen sortieren müssen, können Sie den regulären Ausdruck in der Funktion natural_keys so ändern, dass er mit Gleitkommazahlen anstelle von Ganzzahlen übereinstimmt.
def natural_keys(text): return [float(c) if c.isdigit() or '.' in c else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Mit dieser Erweiterung können Sie Zeichenfolgen wie folgt sortieren:
something1 something2 something1.0 something1.25 something1.105
in der folgenden Reihenfolge:
['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Indem Sie die Kraft natürlicher Tonarten nutzen, können Sie jetzt mühelos Zeichenfolgen mit eingebetteten Zahlen anordnen in einer für Menschen lesbaren Weise, wodurch Ihre Datenbearbeitungsaufgaben effizienter und intuitiver werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen mit eingebetteten Zahlen in Python auf natürliche Weise sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!