Gibt es eine Bibliothek, um eine Ganzzahl in eine erste / zweite / dritte umzuwandeln?

7

Ich habe eine Liste von ganzen Zahlen - gibt es eine Bibliothek, um sie in eine reine Text-Rangliste umzuwandeln? IE: 1,2,3 - & gt; "erster, zweiter, dritter"?

    
gone 24.06.2012, 20:08
quelle

7 Antworten

9

Das Paket python inflect enthält eine Methode zum Konvertieren von Zahlen in Ordinalzahlen:

%Vor%

wird angezeigt:

%Vor%     
psychemedia 29.01.2017 16:44
quelle
5

Wie hoch planen Sie zu gehen? (Erwartest du jemals höher als, sagen wir, "zwanzigsten"?)

Vielleicht brauchen Sie nur ein dict ,

%Vor%     
Hugh Bothwell 24.06.2012 20:30
quelle
3

kann den Beitrag von ryvantage wegen Punkten nicht kommentieren, aber ich habe den gleichen Code für python geschrieben:

%Vor%

Die zweite ist eher eine direkte Übersetzung, aber ich fand, dass die erste Variation wesentlich schneller ist:

Fr 28. August 11:48:13 Ergebnisse 2015

%Vor%     
dgonee 28.08.2015 18:57
quelle
2

Abhängig von Ihrer Situation können Sie die Ganzzahl beibehalten und "st", "nd", "rd" und "th" hinzufügen. Wenn ja, ist hier ein einfacher Algorithmus:

HINWEIS: Dieser Algorithmus ist in Java geschrieben. Ich kenne Python nicht. Jeder, der es in Python neu schreiben möchte, sei mein Gast.

%Vor%

Also

%Vor%

zeigt

an %Vor%     
ryvantage 20.04.2014 12:31
quelle
2

Ähnlich wie die Ader @ Hugh Bothwell folgte , nur kein dict verwendend (da deine Schlüssel bereits nett und numerisch sind), habe ich folgendes " one liner "zusammengestellt: :

%Vor%

Das deckt alle Fälle bis zu 12 ab. Wenn Sie höhere (in die Hunderte usw.) benötigen, dann werden Sie wahrscheinlich etwas robusteres benötigen (mit Rekursion, die ich mir vorstellen kann, usw.).

    
Tersosauros 27.02.2016 17:45
quelle
0

Ein nettes und einfaches Neuschreiben:

%Vor%     
xApple 20.05.2016 09:37
quelle
0

Mein Code hierfür verwendet die Liste, den ganzzahligen Modulus, um die erste Ziffer und die ganzzahlige Stockwerkteilung zu finden, um nach der Aus-Regel 11 bis 13 zu suchen.

%Vor%

Die letzte Zeile ist besser lesbar:

%Vor%

Grundsätzlich überprüfe ich die zweite Ziffer auf 1 *, was auf einen möglichen 11., 12., 13. Regelunterbrecher hinweist. Für die Regelhalter wird die Liste durch den Rest einer Division durch 10 (Modulooperator) referenziert.

Ich habe keine Tests auf Code-Effizienz durchgeführt, und die Überprüfung gegen die Länge ist viel besser lesbar, aber das funktioniert.

* (str (number) [- 2] erzeugt einen IndexError, wenn die Eingabe eine einzelne Ziffer ist. Die Verwendung von floor division für Ganzzahlen ergibt immer mindestens eine Ziffer, so dass die Zeichenkette immer einen Index von -1 hat)

    
Alan Leuthard 28.02.2017 22:37
quelle

Tags und Links