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

Susan Sarandon
Freigeben: 2024-11-06 20:47:02
Original
978 Leute haben es durchsucht

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

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

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

Beispiel:

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

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!