Python bietet mehrere String-Methoden, um festzustellen und zu überprüfen, ob ein String-Typ numerisch oder alphabetisch ist.
Jede Methode wird mit Beispielcode erläutert.
- Ermittelt, ob eine Zeichenkette eine Dezimalstelle ist:
str.isdecimal()
- Bestimmen, ob eine Zeichenkette eine Zahl ist:
str.isdigit()
- Bestimmt, ob eine Zeichenkette ein Zeichen ist, das eine Zahl darstellt:
str.isnumeric()
- Ermittelt, ob die Zeichenkette alphabetisch ist:
str.isalpha()
- Ermitteln, ob die Zeichenfolge alphanumerisch ist:
str.isalnum()
- Bestimmt, ob Zeichenketten ASCII-Zeichen sind:
str.isascii()
- Beurteilung der leeren Zeichenkette
- Feststellen, ob Zeichenketten in Zahlen umgewandelt werden können
Bei anderen Methoden als isascii() ist eine Zeichenfolge, die eine leere Zeichenfolge, die folgenden Symbole usw. enthält, falsch.
,
.
-
-1,23 usw. als numerischer Wert wird am Ende dieses Abschnitts erläutert.
Reguläre Ausdrücke können verwendet werden, um Zeichentypen flexibler zu bestimmen und die relevanten Zeichentypen zu extrahieren.
Im folgenden Artikel finden Sie weitere Informationen darüber, wie Sie Folgendes bestimmen können
- Konvertierung einer numerischen Zeichenkette (str) in eine Zahl (int, float)
- Wie man Groß- und Kleinschreibung bestimmt
- VERBUNDEN:Umwandlung einer Zahlenfolge in numerische Werte in Python
- VERBUNDEN:Liste der String-Methoden zur Bearbeitung von Groß- und Kleinschreibung in Python
- Ermittelt, ob eine Zeichenkette eine Dezimalstelle ist: str.isdecimal()
- Bestimmen, ob eine Zeichenkette eine Zahl ist: str.isdigit()
- Bestimmt, ob eine Zeichenkette ein Zeichen ist, das eine Zahl darstellt: str.isnumeric()
- Ermittelt, ob die Zeichenkette alphabetisch ist: str.isalpha()
- Ermitteln, ob die Zeichenfolge alphanumerisch ist: str.isalnum()
- Bestimmt, ob Zeichenketten ASCII-Zeichen sind: str.isascii()
- Beurteilung der leeren Zeichenkette
- Feststellen, ob Zeichenketten in Zahlen umgewandelt werden können
Ermittelt, ob eine Zeichenkette eine Dezimalstelle ist: str.isdecimal()
Bei isdecimal() ist es wahr, wenn alle Zeichen Dezimalziffern sind, d. h. Zeichen der allgemeinen Kategorie Nd von Unicode. Dies gilt auch für arabische Ziffern in voller Breite usw.
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
s = '1234567890'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 1234567890
# isdecimal: True
# isdigit: True
# isnumeric: True
Wenn sie ein Symbol wie ein Minuszeichen oder einen Punkt enthält, ist sie falsch. Wenn Sie zum Beispiel feststellen wollen, dass eine Zeichenkette wie '-1.23' ein numerischer Wert ist, können Sie die Ausnahmebehandlung verwenden. Dies wird am Ende dieses Abschnitts erklärt.
s = '-1.23'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = -1.23
# isdecimal: False
# isdigit: False
# isnumeric: False
Bestimmen, ob eine Zeichenkette eine Zahl ist: str.isdigit()
In isdigit() sind zusätzlich zu den Zahlen, die in isdecimal() wahr sind, auch Zahlen wahr, deren Unicode-Eigenschaftswert Numeric_Type Digit oder Decimal ist.
So ist beispielsweise eine hochgestellte Zahl, die ein Quadrat darstellt, in isdecimal() falsch, in isdigit() aber wahr.
- hochgestellte Zahl, die das Quadrat darstellt
- ²
- '\u00B2}'
s = '10\u00B2'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 10²
# isdecimal: False
# isdigit: True
# isnumeric: True
Bestimmt, ob eine Zeichenkette ein Zeichen ist, das eine Zahl darstellt: str.isnumeric()
In isnumeric() sind zusätzlich zu den Zahlen, die in isdigit() wahr sind, auch Zahlen wahr, deren Unicode-Eigenschaftswert Numeric_Type gleich Numeric ist.
Auch Brüche, römische und chinesische Ziffern sind richtig.
s = '\u00BD'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = ½
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '\u2166'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = Ⅶ
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '一二三四五六七八九〇'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 一二三四五六七八九〇
# isdecimal: False
# isdigit: False
# isnumeric: True
s = '壱億参阡萬'
print('s =', s)
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 壱億参阡萬
# isdecimal: False
# isdigit: False
# isnumeric: True
Ermittelt, ob die Zeichenkette alphabetisch ist: str.isalpha()
In isalpha() ist eine allgemeine Unicode-Kategorie-Eigenschaft mit einer der folgenden Eigenschaften wahr.
Lm
Lt
Lu
Ll
Lo
Das Alphabet, die chinesischen Schriftzeichen usw. werden richtig sein.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Arabische Ziffern sind falsch, aber chinesische Ziffern sind wahr, weil sie auch chinesische Schriftzeichen sind; die Nullen in chinesischen Ziffern sind jedoch falsch.
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '1234567890'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 1234567890
# isalpha: False
s = '一二三四五六七八九'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 一二三四五六七八九
# isalpha: True
s = '壱億参阡萬'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 壱億参阡萬
# isalpha: True
s = '〇'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 〇
# isalpha: False
Römische Ziffern sind falsch.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Ermitteln, ob die Zeichenfolge alphanumerisch ist: str.isalnum()
In isalnum() ist es wahr, wenn jedes Zeichen in einer der folgenden, bisher aufgeführten Methoden wahr ist.
isdecimal()
isdigit()
isnumeric()
isalpha()
Jedes Zeichen wird einzeln ausgewertet, so dass eine Zeichenfolge, die Buchstaben und Zahlen enthält, in isalnum() wahr ist, auch wenn sie in allen anderen Methoden falsch ist.
s = 'abc123'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = abc123
# isalnum: True
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
Bestimmt, ob Zeichenketten ASCII-Zeichen sind: str.isascii()
In Python 3.7 wurde isascii() hinzugefügt. Sie gibt true zurück, wenn alle Zeichen in der Zeichenkette ASCII-Zeichen sind.
Neben Zahlen und Buchstaben sind auch Symbole wie + und – zutreffend.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Nicht-ASCII-Hiragana und andere Zeichen sind falsch.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Wie wir im Folgenden sehen werden, gibt isascii() im Gegensatz zu den anderen Methoden auch bei einer leeren Zeichenkette true zurück.
Beurteilung der leeren Zeichenkette
Eine leere Zeichenkette ist true für isascii() und false für die anderen Methoden.
s = ''
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s =
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
Verwenden Sie bool(), um festzustellen, ob es sich um eine leere Zeichenkette handelt. Der Rückgabewert ist false für eine leere Zeichenkette und sonst true.
print(bool(''))
# False
print(bool('abc123'))
# True
Feststellen, ob Zeichenketten in Zahlen umgewandelt werden können
Negative oder gebrochene Wertestrings enthalten Punkte oder Minuszeichen. Daher ist das Ergebnis für alle Methoden außer isascii() falsch.
Obwohl es für isascii() zutrifft, ist es nicht geeignet, um festzustellen, ob eine Zeichenkette in einen numerischen Wert umgewandelt werden kann, da es auch dann zutrifft, wenn sie andere Symbole oder alphabetische Zeichen enthält.
s = '-1.23'
print('s =', s)
print('isalnum:', s.isalnum())
print('isalpha:', s.isalpha())
print('isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
print('isascii:', s.isascii())
# s = -1.23
# isalnum: False
# isalpha: False
# isdecimal: False
# isdigit: False
# isnumeric: False
# isascii: True
Strings können mit float() in Fließkommazahlen umgewandelt werden. Fehler bei Strings, die nicht konvertiert werden können.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Mit der Ausnahmebehandlung kann eine Funktion definiert werden, die true zurückgibt, wenn ein String mit float() konvertiert werden kann.
def is_num(s):
try:
float(s)
except ValueError:
return False
else:
return True
print(is_num('123'))
# True
print(is_num('-1.23'))
# True
print(is_num('+1.23e10'))
# True
print(is_num('abc'))
# False
print(is_num('10,000,000'))
# False
Wenn Sie feststellen wollen, dass eine durch Komma getrennte Zahl ebenfalls wahr ist, verwenden Sie replace(), um das Komma zu entfernen (durch eine leere Zeichenfolge zu ersetzen).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Wenn Sie die Begrenzung von Leerzeichen unterstützen wollen, können Sie replace() weiter verwenden.
def is_num_delimiter2(s):
try:
float(s.replace(',', '').replace(' ', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter2('10,000,000'))
# True
print(is_num_delimiter2('10 000 000'))
# True