str.isdigit(), isdecimal() și isnumeric() în Python

Metode pentru șiruri Python 3.0+

Verifică dacă un text conține doar cifre.

Sintaxă
text.isdigit()
text.isdecimal()
text.isnumeric()

Ce face str.isdigit(), isdecimal() și isnumeric()

Cele trei metode returnează True dacă textul nu este gol și toate caracterele sunt „cifre”, dar diferă prin ce consideră cifră. isdecimal() acceptă doar cifrele zecimale (0-9 și echivalentele din alte alfabete), adică exact ce poate citi int(). isdigit() acceptă în plus exponenți precum ². isnumeric() acceptă și fracții (½) sau cifre romane Unicode.

Niciuna nu acceptă semnul minus, punctul zecimal sau spațiile. Pentru a verifica un număr real, încearcă float(text) într-un try. bytes.isdigit() verifică doar cifrele ASCII.

Ce returnează

True sau False.

Exemple

Exemplul 1: Diferențele dintre ele

for t in ["2026", "²", "½", "-5", "3.5", ""]:
    print(repr(t), t.isdecimal(), t.isdigit(), t.isnumeric())

Rezultat

'2026' True True True
'²' False True True
'½' False False True
'-5' False False False
'3.5' False False False
'' False False False

Exemplul 2: Validarea unui cod poștal

for cod in ["700001", "70A001", "7000"]:
    valid = len(cod) == 6 and cod.isdecimal()
    print(cod, "valid" if valid else "invalid")
print(b"123".isdigit())

Rezultat

700001 valid
70A001 invalid
7000 invalid
True

Greșeli frecvente

  • Validezi cu isdigit() și apoi apelezi int(): textul "²" trece testul, dar int("²") dă ValueError. Folosește isdecimal().

Comenzi înrudite