Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Zeichenfolgen mit eingebetteten Zahlen in Python auf natürliche Weise sortieren?

Wie kann ich Zeichenfolgen mit eingebetteten Zahlen in Python auf natürliche Weise sortieren?

Linda Hamilton
Freigeben: 2024-12-10 09:43:14
Original
727 Leute haben es durchsucht

How Can I Sort Strings with Embedded Numbers Naturally in Python?

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
Nach dem Login kopieren
Nach dem Login kopieren

sortiert werden als:

something1
something12
something17
something2
something25
something29
Nach dem Login kopieren
Nach dem Login kopieren

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)]
Nach dem Login kopieren

Bei Anwendung auf die Eingabeliste wird die Das Ergebnis wäre:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Nach dem Login kopieren

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)]
Nach dem Login kopieren

Mit dieser Erweiterung können Sie Zeichenfolgen wie folgt sortieren:

something1
something2
something1.0
something1.25
something1.105
Nach dem Login kopieren

in der folgenden Reihenfolge:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage