Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erreicht man eine Sortierung in natürlicher Reihenfolge in Python wie die Natsort-Funktion von PHP?

Wie erreicht man eine Sortierung in natürlicher Reihenfolge in Python wie die Natsort-Funktion von PHP?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 20:47:02980Durchsuche

How to Achieve Natural Order Sorting in Python Like PHP's natsort Function?

Python-Äquivalent für PHPs Natsort-Funktion: Sortierung in natürlicher Reihenfolge

Die PHP-Natsort-Funktion wird verwendet, um eine Liste nach einer „natürlichen Reihenfolge“ zu sortieren. Algorithmus, der Zeichenfolgen mit Zahlen auf für Menschen lesbare Weise verarbeitet. Python hat kein genaues Äquivalent zu Natsort, aber es sind benutzerdefinierte Lösungen verfügbar.

Ein Ansatz besteht darin, eine Kombination der integrierten Python-Funktionen zu verwenden:

<code class="python">import re

def try_int(s):
    "Convert to integer if possible."
    try: return int(s)
    except: return s

def natsort_key(s):
    "Used internally to get a tuple by which s is sorted."
    return map(try_int, re.findall(r'(\d+|\D+)', s))

def natcmp(a, b):
    "Natural string comparison, case sensitive."
    return cmp(natsort_key(a), natsort_key(b))

def natcasecmp(a, b):
    "Natural string comparison, ignores case."
    return natcmp(a.lower(), b.lower())</code>

Um a zu sortieren Liste mit natürlicher Reihenfolge:

<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort(natcasecmp)</code>

Ein weiterer Ansatz, der Unicode-Strings unterstützt, ist die Verwendung einer benutzerdefinierten Schlüsselfunktion basierend auf Pythons natural_key-Funktion:

<code class="python">import re
def natural_key(string_):
    """See https://blog.codinghorror.com/sorting-for-humans-natural-sort-order/"""
    return [int(s) if s.isdigit() else s for s in re.split(r'(\d+)', string_)]</code>

Beispiel:

<code class="python">l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort(key=natural_key)</code>

Das obige ist der detaillierte Inhalt vonWie erreicht man eine Sortierung in natürlicher Reihenfolge in Python wie die Natsort-Funktion von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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