separar - reemplazar caracteres en python
Detectar si una cadena de Python es un nĂºmero o una letra (2)
Comprueba si la cadena es un dígito positivo (entero) y un alfabeto
Puede usar str.isdigit()
y str.isalpha()
para verificar si la cadena dada es un entero y un alfabeto positivos respectivamente.
Resultados de la muestra:
# For alphabet
>>> ''A''.isdigit()
False
>>> ''A''.isalpha()
True
# For digit
>>> ''1''.isdigit()
True
>>> ''1''.isalpha()
False
Compruebe si las cadenas son positivas / negativas - entero / flotante
str.isdigit()
devuelve False
si la cadena es un número negativo o un número flotante. Por ejemplo:
# returns `False` for float
>>> ''123.3''.isdigit()
False
# returns `False` for negative number
>>> ''-123''.isdigit()
False
Si también desea verificar los enteros negativos y la float
, puede escribir una función personalizada para verificarlo como:
def is_number(n):
try:
float(n) # Type-casting the string to `float`.
# If string is not a valid `float`,
# it''ll raise `ValueError` exception
except ValueError:
return False
return True
Ejecución de la muestra:
>>> is_number(''123'') # positive integer number
True
>>> is_number(''123.4'') # positive float number
True
>>> is_number(''-123'') # negative integer number
True
>>> is_number(''-123.4'') # negative `float` number
True
>>> is_number(''abc'') # `False` for "some random" string
False
Deseche las cadenas "NaN" (no un número) mientras verifica el número
Las funciones anteriores devolverán True
para la cadena "NAN" (no es un número) porque para Python es un valor flotante válido que representa que no es un número. Por ejemplo:
>>> is_number(''NaN'')
True
Para verificar si el número es "NaN", puede usar math.isnan()
como:
>>> import math
>>> nan_num = float(''nan'')
>>> math.isnan(nan_num)
True
O si no desea importar una biblioteca adicional para verificar esto, simplemente puede verificarlo comparándolo con él mismo utilizando ==
. Python devuelve False
cuando se compara nan
float consigo mismo. Por ejemplo:
# `nan_num` variable is taken from above example
>>> nan_num == nan_num
False
Por lo tanto, la función anterior es is_number
puede actualizarse para devolver False
para "NaN"
como:
def is_number(n):
is_number = True
try:
num = float(n)
# check for "nan" floats
is_number = num == num # or use `math.isnan(num)`
except ValueError:
is_number = False
return is_number
Ejecución de la muestra:
>>> is_number(''Nan'') # not a number "Nan" string
False
>>> is_number(''nan'') # not a number string "nan" with all lower cased
False
>>> is_number(''123'') # positive integer
True
>>> is_number(''-123'') # negative integer
True
>>> is_number(''-1.12'') # negative `float`
True
>>> is_number(''abc'') # "some random" string
False
Permitir que el número complejo como "1 + 2j" sea tratado como un número válido
La función anterior todavía le devolverá False
para los números complejos . Si desea que su función is_number
trate los números complejos como números válidos , debe escribir la cadena pasada a complex()
lugar de float . Entonces su función is_number
se verá así:
def is_number(n):
is_number = True
try:
# v type-casting the number here as `complex`, instead of `float`
num = complex(n)
is_number = num == num
except ValueError:
is_number = False
return is_number
Ejecución de la muestra:
>>> is_number(''1+2j'') # Valid
True # : complex number
>>> is_number(''1+ 2j'') # Invalid
False # : string with space in complex number represetantion
# is treated as invalid complex number
>>> is_number(''123'') # Valid
True # : positive integer
>>> is_number(''-123'') # Valid
True # : negative integer
>>> is_number(''abc'') # Invalid
False # : some random string, not a valid number
>>> is_number(''nan'') # Invalid
False # : not a number "nan" string
PS: Cada operación para cada verificación, según el tipo de número, conlleva una sobrecarga adicional. Elija la versión de la función is_number
que se ajuste a sus necesidades.
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo comprobar si el carácter en una cadena es una letra? Python 4 respuestas
- ¿Cómo verifico si una cadena es un número (float)? 32 respuestas
¿Cómo puedo detectar números o letras en una cadena? Soy consciente de que utiliza los códigos ASCII, pero ¿qué funciones los aprovechan?
Para una cadena de longitud 1, simplemente puede realizar isdigit()
o isalpha()
Si la longitud de su cadena es mayor que 1, puede hacer una función algo como ...
def isinteger(a):
try:
int(a)
return True
except ValueError:
return False