Python proporciona diversos mètodes de cadena per determinar i comprovar si un tipus de cadena és numèric o alfabètic.
Cada mètode s’explica amb codi d’exemple.
- Determina si una cadena és un dígit decimal:
str.isdecimal()
- Determinar si una cadena és un nombre:
str.isdigit()
- Determina si una cadena és un caràcter que representa un nombre:
str.isnumeric()
- Determina si la cadena és alfabètica:
str.isalpha()
- Determineu si la cadena és alfanumèrica:
str.isalnum()
- Determina si les cadenes són caràcters ASCII:
str.isascii()
- Judici de corda buida
- Determineu si les cadenes es poden convertir en números
Per a mètodes diferents de isascii(), una cadena que conté una cadena buida, els símbols següents, etc., és falsa.
,
.
-
-1,23, etc., com a valor numèric s’explica al final d’aquest apartat.
Les expressions regulars es poden utilitzar per determinar els tipus de caràcters de manera més flexible i per extreure els tipus de caràcters rellevants.
Consulteu l’article següent per obtenir més informació sobre com determinar el següent
- Com convertir una cadena numèrica (str) en un nombre (int, float)
- Com determinar majúscules i minúscules
- RELACIONATS:Convertir una cadena de números a valors numèrics en Python
- RELACIONATS:Llista de mètodes de cadena per manipular majúscules i minúscules en Python
- Determina si una cadena és un dígit decimal:str.isdecimal()
- Determinar si una cadena és un nombre:str.isdigit()
- Determina si una cadena és un caràcter que representa un nombre:str.isnumeric()
- Determina si la cadena és alfabètica:str.isalpha()
- Determineu si la cadena és alfanumèrica:str.isalnum()
- Determina si les cadenes són caràcters ASCII:str.isascii()
- Judici de corda buida
- Determineu si les cadenes es poden convertir en números
Determina si una cadena és un dígit decimal:str.isdecimal()
A isdecimal(), és cert si tots els caràcters són dígits decimals, és a dir, caràcters de la categoria general Nd d’Unicode. També és cert per als números àrabs d’amplada completa, etc.
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
Si conté un símbol com un signe menys o un punt, és fals. Per exemple, si voleu determinar que una cadena com ara ‘-1,23’ és un valor numèric, podeu utilitzar el maneig d’excepcions. Això s’explica al final d’aquesta secció.
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
Determinar si una cadena és un nombre:str.isdigit()
A isdigit(), a més dels números que són certs en isdecimal(), també ho són els nombres el valor de propietat Unicode dels quals Numeric_Type és Digit o Decimal.
Per exemple, un nombre superíndex que representa un quadrat és fals a isdecimal() però cert a isdigit().
- nombre superíndex que representa el quadrat
- ²
- \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
Determina si una cadena és un caràcter que representa un nombre:str.isnumeric()
A isnumeric(), a més dels números que són certs a isdigit(), també ho són els nombres el valor de propietat Unicode dels quals Numeric_Type és Numeric.
Les fraccions, els números romans i els xinesos també són certs.
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
Determina si la cadena és alfabètica:str.isalpha()
A isalpha(), una propietat de categoria general Unicode amb una de les següents és certa.
Lm
Lt
Lu
Ll
Lo
L’alfabet, els caràcters xinesos, etc. seran certs.
s = 'abc'
print('s =', s)
print('isalpha:', s.isalpha())
# s = abc
# isalpha: True
s = '漢字'
print('s =', s)
print('isalpha:', s.isalpha())
# s = 漢字
# isalpha: True
Els números àrabs són falsos, però els xinesos són certs perquè també són caràcters xinesos; tanmateix, els zeros en xinesos són falsos.
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
Els números romans són falsos.
s = '\u2166'
print('s =', s)
print('isalpha:', s.isalpha())
# s = Ⅶ
# isalpha: False
Determineu si la cadena és alfanumèrica:str.isalnum()
A isalnum(), és cert si cada caràcter és cert en qualsevol dels mètodes següents enumerats fins ara.
isdecimal()
isdigit()
isnumeric()
isalpha()
Cada caràcter s’avalua individualment, de manera que una cadena que contingui lletres i números serà certa a isalnum() encara que sigui falsa en tots els altres mètodes.
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
Determina si les cadenes són caràcters ASCII:str.isascii()
Python 3.7 va afegir isascii(). Retorna true si tots els caràcters de la cadena són caràcters ASCII.
A més dels números i lletres, símbols com + i – també són certs.
s = 'abc123+-,.&'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = abc123+-,.&
# isascii: True
# isalnum: False
Hiragana no ASCII i altres caràcters són falsos.
s = 'あいうえお'
print('s =', s)
print('isascii:', s.isascii())
print('isalnum:', s.isalnum())
# s = あいうえお
# isascii: False
# isalnum: True
Com veurem a continuació, a diferència dels altres mètodes, isascii() retorna true fins i tot per a una cadena buida.
Judici de corda buida
Una cadena buida és true per a isascii() i fals per als altres mètodes.
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
Utilitzeu bool() per determinar si és una cadena buida. El valor de retorn és fals per a una cadena buida i cert en cas contrari.
print(bool(''))
# False
print(bool('abc123'))
# True
Determineu si les cadenes es poden convertir en números
Les cadenes de valors negatius o fraccionaris contenen punts o signes menys. Per tant, el resultat és fals per a tots els mètodes excepte isascii().
Encara que és cert per a isascii(), no és adequat per determinar si una cadena es pot convertir en un valor numèric, ja que és cert encara que conté altres símbols o caràcters alfabètics.
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
Les cadenes es poden convertir en números de coma flotant amb float(). Error per a les cadenes que no es poden convertir.
print(float('-1.23'))
# -1.23
print(type(float('-1.23')))
# <class 'float'>
# print(float('abc'))
# ValueError: could not convert string to float: 'abc'
Amb el maneig d’excepcions, es pot definir una funció que retorni true quan es pot convertir una cadena amb 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 voleu determinar que un nombre separat per comes també és cert, feu servir replace() per eliminar la coma (substituïu-la per una cadena buida).
def is_num_delimiter(s):
try:
float(s.replace(',', ''))
except ValueError:
return False
else:
return True
print(is_num_delimiter('10,000,000'))
# True
Si voleu suportar la delimitació d’espais en blanc, podeu utilitzar substituir() més.
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