Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich in Python eine natürliche Sortierung für Zeichenfolgen implementieren, die Zahlen und Gleitkommazahlen enthalten?

Wie kann ich in Python eine natürliche Sortierung für Zeichenfolgen implementieren, die Zahlen und Gleitkommazahlen enthalten?

Mary-Kate Olsen
Freigeben: 2024-12-02 08:54:09
Original
532 Leute haben es durchsucht

How Can I Implement Natural Sorting for Strings Containing Numbers and Floats in Python?

Natürliche Sortierung für Zeichenfolgen mit Zahlen

Beim Sortieren von Zeichenfolgen, die Zahlen enthalten, liefern die Standardsortiermethoden möglicherweise nicht das gewünschte Ergebnis. Beispielsweise kann die Zeichenfolge „something12“ nach „something2“ statt davor platziert werden.

Um dies zu korrigieren, können wir eine natürliche Sortierung verwenden, die die Zahlen innerhalb der Zeichenfolgen berücksichtigt. So geht's:

Notwendige Module importieren:

Zuerst importieren wir das re-Modul für die Verarbeitung regulärer Ausdrücke.

import re
Nach dem Login kopieren

Definieren Hilfsfunktionen:

Wir definieren Hilfsfunktionen zum Konvertieren von Zeichenfolgen in Ganzzahlen und floats:

def atoi(text):
    return int(text) if text.isdigit() else text

def atof(text):
    try:
        retval = float(text)
    except ValueError:
        retval = text
    return retval
Nach dem Login kopieren

Definieren der natürlichen Sortierfunktion:

Die Funktion natural_keys teilt die Zeichenfolge mithilfe regulärer Ausdrücke in ihre Bestandteile auf:

def natural_keys(text):
    return [atoi(c) for c in re.split(r'(\d+)', text)]
Nach dem Login kopieren

Sortieren mit natürlichen Schlüsseln:

Verwendung der Die Funktion natural_keys als Schlüssel zum Sortieren ordnet die Zeichenfolgen in natürlicher Reihenfolge an:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)
Nach dem Login kopieren

Ausgabe:

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

Handhabung von Floats:

To Sortieren Sie Zeichenfolgen, die Floats enthalten, und ändern Sie den regulären Ausdruck in natural_keys so, dass er mit Floats übereinstimmt:

def natural_keys(text):
    return [atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich in Python eine natürliche Sortierung für Zeichenfolgen implementieren, die Zahlen und Gleitkommazahlen enthalten?. 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