Was ist der Unterschied zwischen str.isdigit (), isnumeric und isdecimal in Python?

9

Wenn ich diese Methoden starte

%Vor%

Ich habe immer als Ausgabe oder alle True, oder alle False für jeden Wert von s (was natürlich eine Zeichenfolge ist). Was ist der Unterschied zwischen den dreien? Können Sie ein Beispiel geben, das zwei Wahrheiten und einen falschen (oder umgekehrt) gibt?

    
user8225026 03.07.2017, 17:22
quelle

2 Antworten

9

Es geht hauptsächlich um Unicode-Klassifikationen. Hier sind einige Beispiele, um Diskrepanzen aufzuzeigen:

%Vor%

Spezifisches Verhalten ist in der offiziellen Dokumentation hier .

    
wim 03.07.2017, 17:32
quelle
7

In der Python-Dokumentation wird der Unterschied zwischen den drei Methoden festgestellt.

str.isdigit

  

Gibt true zurück, wenn alle Zeichen in der Zeichenfolge Ziffern sind und mindestens ein Zeichen vorhanden ist, andernfalls false. Ziffern enthalten Dezimalzeichen und Ziffern, die speziell behandelt werden müssen, z. B. die hochgestellten Ziffern für die Kompatibilität. Dies umfasst Ziffern, die nicht zur Bildung von Zahlen in der Basis 10 verwendet werden können, wie die Kharosthi-Zahlen. Formal ist eine Ziffer ein Zeichen mit dem Eigenschaftswert Numeric_Type = Digit oder Numeric_Type = Decimal .

str.isnumeric

  

Geben Sie true zurück, wenn alle Zeichen in der Zeichenfolge numerische Zeichen sind und mindestens ein Zeichen vorhanden ist, andernfalls false. Numerische Zeichen umfassen Ziffernzeichen und alle Zeichen, die die Eigenschaft Unicode numeric value aufweisen, z. U + 2155, VULGAR FRACTION EINE FÜNFTE. Formal sind numerische Zeichen diejenigen mit dem Eigenschaftswert Numeric_Type = Digit, Numeric_Type = Dezimal oder Numeric_Type = numerisch .

str.isdecimal

  

Geben Sie true zurück, wenn alle Zeichen in der Zeichenfolge Dezimalzeichen sind und mindestens ein Zeichen vorhanden ist, andernfalls false. Dezimalzeichen sind Zeichen, die verwendet werden können, um Zahlen in der Basis 10 zu bilden, z. U + 0660, ARABIC-INDIC DIGIT ZERO. Formal ist ein Dezimalzeichen ein Zeichen in der allgemeinen Unicode-Kategorie "Nd" .

Wie @Wim gesagt hat, ist der Hauptunterschied zwischen den drei Methoden die Art, wie sie mit bestimmten Unicode-Zeichen umgehen.

    
Christian Dean 03.07.2017 17:35
quelle