
Python fournit des méthodes pour vérifier si tous les caractères de la chaîne str sont numériques, alphabétiques, alphanumériques ou ASCII.
Cet article décrit le contenu suivant.
- Vérifiez si une chaîne ne contient que des décimales :
str.isdecimal()
- Vérifiez si une chaîne ne contient que des chiffres :
str.isdigit()
- Vérifiez si une chaîne ne contient que des chiffres :
str.isnumeric()
- Vérifiez si une chaîne ne contient que des caractères alphabétiques :
str.isalpha()
- Vérifiez si une chaîne ne contient que des caractères alphanumériques :
str.isalnum()
- Vérifiez si une chaîne ne contient que de l’ASCII :
str.isascii()
- Vérifier si une chaîne est vide
- Vérifier si une chaîne est un nombre (= peut être converti en valeur numérique)
Pour les méthodes autres que isascii(), les chaînes vides et les chaînes contenant des symboles (,, ., -, etc.) renvoient False. La dernière section décrit comment vérifier que -1,23, par exemple, est une valeur numérique.
Consultez l’article suivant pour savoir comment convertir une chaîne str en nombres int et float.
Vérifiez si une chaîne ne contient que des décimales :str.isdecimal()
isdecimal() renvoie True si tous les caractères sont des caractères décimaux dans la catégorie générale Unicode Nd. Les nombres pleine chasse CJC sont également déterminés comme étant vrais.
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
Une chaîne contenant des symboles tels que – et . est déterminé comme étant Faux.
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
Si vous souhaitez déterminer une chaîne telle que ‘-1.23’ comme un nombre, vous pouvez utiliser la gestion des exceptions. Il est décrit dans la dernière section.
Vérifiez si une chaîne ne contient que des chiffres :str.isdigit()
isdigit() renvoie True non seulement pour les caractères qui sont True avec isdecimal() mais également pour les caractères dont la valeur de propriété Unicode Numeric_Type est Digit ou Decimal.
Par exemple, le nombre en exposant ² (‘u00B2’) est False dans isdecimal(), mais True dans isdigit().
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
Vérifiez si une chaîne ne contient que des chiffres :str.isnumeric()
isnumeric() renvoie True non seulement pour les caractères qui sont True avec isdigit() mais également pour les caractères dont la valeur de propriété Unicode Numeric_Type est Numeric.
Les fractions vulgaires, les chiffres romains, les chiffres chinois, etc. sont également déterminés comme vrais.
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
Vérifiez si une chaîne ne contient que des caractères alphabétiques :str.isalpha()
isalpha() renvoie True si tous les caractères de la chaîne sont alphabétiques. Les caractères alphabétiques sont ceux définis dans la base de données de caractères Unicode comme Lettre, c’est-à-dire ceux dont la propriété de catégorie générale est Lm, Lt, Lu, Ll ou Lo.
Non seulement l’alphabet latin, mais aussi les caractères d’autres langues, comme les hiragana japonais, sont déterminés comme vrais.
s = 'abc'
print('s=", s)
print("isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = 'あいうえお'
print('s=", s)
print("isalpha:', s.isalpha())
# s = あいうえお
# isalpha: True
Vérifiez si une chaîne ne contient que des caractères alphanumériques :str.isalnum()
isalnum() renvoie True si chaque caractère est True avec l’une des méthodes répertoriées jusqu’à présent, isdecimal(), isdigit(), isnumeric() et isalpha().
Étant donné que chaque caractère est évalué individuellement, une chaîne contenant des caractères alphabétiques et numériques est déterminée comme True dans isalnum() même si False dans toutes les autres méthodes.
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
Vérifiez si une chaîne ne contient que de l’ASCII :str.isascii()
Dans Python 3.7, isascii() a été ajouté. isascii() renvoie True si tous les caractères de la chaîne sont des caractères ASCII (U+0000 – U+007F).
Les symboles tels que + et – sont également déterminés comme vrais.
s = 'abc123+-,.&'
print('s=", s)
print("isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Hiragana, etc., qui ne sont pas ASCII, sont déterminés comme faux.
s = 'あいうえお'
print('s=", s)
print("isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Contrairement aux autres méthodes, isascii() renvoie True même pour les chaînes vides, comme expliqué ci-après.
Vérifier si une chaîne est vide
La chaîne vide » est déterminée comme True par isascii() et comme False par d’autres méthodes.
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
Utilisez bool() pour vérifier si une chaîne est vide ou non. Elle renvoie False pour une chaîne vide et True pour les autres.
print(bool(''))
# False
print(bool('abc123'))
# True
Vérifier si une chaîne est un nombre (= peut être converti en valeur numérique)
Un nombre négatif ou une valeur décimale contient . ou -, elles sont donc déterminées comme False pour les méthodes autres que isascii().
Bien que isascii() renvoie True, il ne convient pas pour vérifier si une chaîne est un nombre (= peut être converti en une valeur numérique), car il renvoie True même si d’autres symboles ou alphabets sont inclus.
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
Une chaîne str peut être convertie en un nombre à virgule flottante avec float(). Une erreur est générée pour les chaînes qui ne peuvent pas être converties en nombres.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Avec la gestion des exceptions, vous pouvez définir une fonction qui renvoie True lorsqu’une chaîne peut être convertie avec float().
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
Si vous souhaitez déterminer la chaîne contenant le séparateur de groupe de chiffres comme True, utilisez replace() pour les supprimer en remplaçant , par la chaîne vide ».
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Vous pouvez également utiliser replace() pour les séparateurs d’espaces.
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
Si vous voulez vérifier si un nombre est un entier ou un décimal, consultez l’article suivant.