Compruebe si la cadena contiene solo espacios en blanco


219

¿Cómo puedo probar si una cadena contiene solo espacios en blanco?

Cadenas de ejemplo:

  • " " (espacio, espacio, espacio)

  • " \t \n " (espacio, tabulación, espacio, nueva línea, espacio)

  • "\n\n\n\t\n" (nueva línea, nueva línea, nueva línea, pestaña, nueva línea)

Respuestas:


312

Usa el str.isspace()método:

Regrese Truesi solo hay caracteres de espacio en blanco en la cadena y hay al menos un carácter, de lo Falsecontrario.

Un carácter es un espacio en blanco si en la base de datos de caracteres Unicode (ver unicodedata ), o su categoría general es Zs ("Separador, espacio"), o su clase bidireccional es WS, B o S.

Combina eso con un caso especial para manejar la cadena vacía.

Alternativamente, puede usar str.strip()y verificar si el resultado está vacío.


Esto falla en Python 2.4 si la cadena contiene un espacio ininterrumpido, charcode U+00A0o ALT+160. Sin embargo, parece arreglado en Python 2.7.
Kumba

18
Tenga en cuenta que esto no verifica None, o''
Parth Mehrotra

1
En python 2.7.13, isspace () considerará el espacio sin interrupción como un espacio. ¡Agradable!
Iching Chang

Es posible que también desee excluir cadenas vacías, en ese caso puede hacer:if len(str) == 0 or str.isspace():
Joe

@Joe len(my_str) == 0también se puede escribir not my_str.
AMC hace

55
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]

¿Por qué la opción de tener que volver Truea None?
AMC hace

32

Quieres usar el isspace()método

str. isspace ()

Devuelve verdadero si solo hay caracteres de espacio en blanco en la cadena y hay al menos un carácter, falso de lo contrario.

Eso se define en cada objeto de cadena. Aquí hay un ejemplo de uso para su caso de uso específico:

if aStr and (not aStr.isspace()):
    print aStr

¿No es esta la misma solución que la respuesta actual y aceptada ?
AMC hace



6

Verifique la longitud de la lista dada por el método split ().

if len(your_string.split()==0:
     print("yes")

O compare la salida del método strip () con nulo.

if your_string.strip() == '':
     print("yes")

1
No hay razón para dividir la cadena, len()funciona en cadenas. Además, el OP no pedía probar la cadena vacía, sino una cadena que fuera todos los espacios. Sin embargo, tu segundo método no es malo. Además, sus padres que rodean el condicional no son necesarios en Python.
NeilK

1
Por extraño que parezca, el primer método es en realidad una buena forma de verificar que ninguno de los personajes son espacios, si lo reemplaza ==0con==1
Mad Physicist

if len(your_string.split())==0:-> if not your_string.split():, if your_string.strip() == '':-> if not your_string.strip():. En cualquier caso, el primero es inferior a las soluciones existentes, y el segundo ya se ha mencionado en otras respuestas.
AMC hace

3

Aquí hay una respuesta que debería funcionar en todos los casos:

def is_empty(s):
    "Check whether a string is empty"
    return not s or not s.strip()

Si la variable es Ninguna, se detendrá en not sy no evaluará más (desde not None == True). Aparentemente, el strip()método se ocupa de los casos habituales de tabulación, nueva línea, etc.


ya quenot None == True probablemente sea más claro decirlo None is False. Además, ==no debe usarse para estas comparaciones.
AMC hace

2

Supongo que en su escenario, una cadena vacía es una cadena que está realmente vacía o que contiene todo el espacio en blanco.

if(str.strip()):
    print("string is not empty")
else:
    print("string is empty")

Tenga en cuenta que esto no verifica None


¿No ha sido esto cubierto por las respuestas existentes?
AMC hace

2

Solía ​​seguir:

if str and not str.isspace():
  print('not null and not empty nor whitespace')
else:
  print('null or empty or whitespace')

null ¿Quieres decir None?
AMC hace

1

Para verificar si una cadena es solo un espacio o una nueva línea

Usa este código simple

mystr = "      \n  \r  \t   "
if not mystr.strip(): # The String Is Only Spaces!
    print("\n[!] Invalid String !!!")
    exit(1)
mystr = mystr.strip()
print("\n[*] Your String Is: "+mystr)

1

La semejanza con el método estático de cadena c # esNullOrWhiteSpace.

def isNullOrWhiteSpace(str):
  """Indicates whether the specified string is null or empty string.
     Returns: True if the str parameter is null, an empty string ("") or contains 
     whitespace. Returns false otherwise."""
  if (str is None) or (str == "") or (str.isspace()):
    return True
  return False

isNullOrWhiteSpace(None) -> True // None equals null in c#, java, php
isNullOrWhiteSpace("")   -> True
isNullOrWhiteSpace(" ")  -> True

Puedes simplementereturn (str is None) or (str == "") or (str.isspace())
Alexander - Reincorporar a Monica el

Ah, y tanto Noney ""son Falsy, lo que sólo puede:return not str or str.isspace()
Alexander - Restablecer Mónica

Esto es bastante unidiomático.
AMC hace

@AMC podrías explicar esto, no entiendo qué estás tratando de decir.
banda ancha hace
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.