Skip to content

Prüfen, ob eine Zeichenkette numerisch, alphabetisch, alphanumerisch oder ASCII ist

Python

Python stellt Methoden bereit, um zu überprüfen, ob alle Zeichen in der Zeichenfolge numerisch, alphabetisch, alphanumerisch oder ASCII sind.

Dieser Artikel hat folgenden Inhalt.

  • Überprüfen Sie, ob eine Zeichenfolge nur Dezimalzahlen enthält:str.isdecimal()
  • Prüfen, ob ein String nur Ziffern enthält:str.isdigit()
  • Überprüfen Sie, ob eine Zeichenfolge nur Zahlen enthält:str.isnumeric()
  • Überprüfen Sie, ob eine Zeichenfolge nur Buchstaben enthält:str.isalpha()
  • Überprüfen Sie, ob eine Zeichenfolge nur alphanumerische Zeichen enthält:str.isalnum()
  • Prüfen Sie, ob ein String nur ASCII enthält:str.isascii()
  • Überprüfen Sie, ob eine Zeichenfolge leer ist
  • Prüfen, ob ein String eine Zahl ist (= kann in Zahlenwert umgewandelt werden)

Bei anderen Methoden als isascii() geben leere Zeichenfolgen und Zeichenfolgen mit Symbolen (,, ., – usw.) False zurück. Im letzten Abschnitt WIRD beschrieben, wie SIE beispielsweise überprüfen, ob -1,23 ein numerischer Wert ist.

Im following Artikel erfahren Sie, wie Sie einen String str in Zahlen int und float umwandeln.

Überprüfen Sie, ob eine Zeichenfolge nur Dezimalzahlen enthält:str.isdecimal()

isdecimal() gibt True zurück, wenn alle Zeichen Dezimalzeichen in der allgemeinen Unicode-Kategorie Nd sind. CJK-Zahlen in voller Breite werden ebenfalls als wahr bestimmt.

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

Eine Zeichenfolge mit Symbolen wie – und . als falsch bestimmt wird.

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

Wenn SIE Eine Zeichenfolge wie ‚-1.23‘ als Zahl ermitteln möchten, can SIE sterben Ausnahmebehandlung verwenden. Es wird im letzten Abschnitt beschrieben.

Prüfen, ob ein String nur Ziffern enthält:str.isdigit()

isdigit() gibt True nicht nur für Zeichen zurück, die mit isdecimal() True sind, sondern auch für Zeichen, deren Unicode-Eigenschaftenwert Numeric_Type Digit oder Decimal ist.

Beispielsweise ist die hochgestellte Zahl ² (‚u00B2‘) in isdecimal() False, aber in isdigit() True.

s = '10u00B2'
print('s=", s)
print("isdecimal:', s.isdecimal())
print('isdigit:', s.isdigit())
print('isnumeric:', s.isnumeric())
# s = 10²
# isdecimal: False
# isdigit: True
# isnumeric: True

Überprüfen Sie, ob eine Zeichenfolge nur Zahlen enthält:str.isnumeric()

isnumeric() gibt True nicht nur für Zeichen zurück, die mit isdigit() True sind, sondern auch für Zeichen, deren Unicode-Eigenschaftenwert Numeric_Type Numeric ist.

Gewöhnliche Brüche, römische Ziffern, chinesische Ziffern usw. werden ebenfalls als wahr bestimmt.

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

Überprüfen Sie, ob eine Zeichenfolge nur Buchstaben enthält:str.isalpha()

isalpha() gibt True zurück, wenn alle Zeichen im String alphabetisch sind. Alphabetische Zeichen sind solche, die in der Unicode-Zeichendatenbank als Buchstabe definiert sind, dh solche mit einer allgemeinen Kategorieeigenschaft, die entweder Lm, Lt, Lu, Ll oder Lo ist.

Nicht nur das lateinische Alphabet, sondern auch Zeichen anderer Sprachen, wie beispielsweise das japanische Hiragana, werden als wahr bestimmt.

s = 'abc'
print('s=", s)
print("isalpha:', s.isalpha())
# s = abc
# isalpha: True

s = 'あいうえお'
print('s=", s)
print("isalpha:', s.isalpha())
# s = あいうえお
# isalpha: True

Überprüfen Sie, ob eine Zeichenfolge nur alphanumerische Zeichen enthält:str.isalnum()

isalnum() gibt True zurück, wenn jedes Zeichen mit einer der bisher aufgelisteten Methoden isdecimal(), isdigit(), isnumeric() und isalpha() True ist.

Da jedes Zeichen einzeln ausgewertet WIRD, WIRD ein String, der Buchstaben und Zahlen enthält, in isalnum() als True bestimmt, auch wenn er in allen anderen Methoden False 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

Prüfen Sie, ob ein String nur ASCII enthält:str.isascii()

In Python 3.7 wurde isascii() hinzugefügt. isascii() gibt True zurück, wenn alle Zeichen im String ASCII-Zeichen sind (U+0000 – U+007F).

Symbole wie + und – werden ebenfalls als True bestimmt.

s = 'abc123+-,.&'
print('s=", s)
print("isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False

Hiragana usw., die nicht ASCII sind, werden als False bestimmt.

s = 'あいうえお'
print('s=", s)
print("isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True

Im Gegensatz zu den anderen Methoden gibt es isascii() True sogar für leere Strings zurück, wie im Folgenden erklärt wird.

Überprüfen Sie, ob eine Zeichenfolge leer ist

Der leere String “ wird von isascii() als True und von anderen Methoden als False bestimmt.

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 zu prüfen, ob ein String leer ist oder nicht. Es gibt False für eine leere Zeichenfolge und True für andere zurück.

print(bool(''))
# False

print(bool('abc123'))
# True

Prüfen, ob ein String eine Zahl ist (= kann in Zahlenwert umgewandelt werden)

Eine negative Zahl oder ein Dezimalwert enthält . oder -, sodass sie für andere Methoden als isascii() als False bestimmt werden.

Obwohl isascii() True zurückgibt, ist es nicht geeignet, um zu prüfen, ob ein String eine Zahl ist (= kann in einen numerischen Wert umgewandelt werden), da es True zurückgibt, selbst wenn andere Symbole oder Alphabete enthalten sind.

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

Ein String str kann mit float() in eine Fließkommazahl umgewandelt werden. Bei Zeichenfolgen, die nicht in Zahlen konvertiert werden können, WIRD ein Fehler ausgelöst.

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 can SIE Eine Funktion definieren, 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

If SIE den String, der das Zifferngruppentrennzeichen enthält, als True bestimmen möchten, verwenden SIE replace(), um SIE zu entfernen, indem SIE , durch den leeren String “ 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

Sie können auch replace() für Whitespace-Trennzeichen 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

Wenn Sie überprüfen möchten, ob eine Zahl eine Ganzzahl oder eine Dezimalzahl ist, lesen Sie den following Artikel.