Respostas:
Use o str.isspace()
método:
Retorne
True
se houver apenas caracteres de espaço em branco na string e houver pelo menos um caractere,False
caso contrário.Um caractere é um espaço em branco se, no banco de dados de caracteres Unicode (consulte unicodedata ), sua categoria geral for Zs (“Separador, espaço”) ou sua classe bidirecional for WS, B ou S.
Combine isso com um caso especial para manipular a string vazia.
Como alternativa, você pode usar str.strip()
e verificar se o resultado está vazio.
None
, ou''
if len(str) == 0 or str.isspace():
len(my_str) == 0
também pode ser escrito not my_str
.
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]
True
para None
?
Você quer usar o isspace()
método
str. isspace ()
Retorne true se houver apenas caracteres de espaço em branco na string e houver pelo menos um caractere, caso contrário, false.
Isso é definido em cada objeto de string. Aqui está um exemplo de uso para seu caso de uso específico:
if aStr and (not aStr.isspace()):
print aStr
Você pode usar o str.isspace()
método
para aqueles que esperam um comportamento como o apache StringUtils.isBlank ou Guava Strings.isNullOrEmpty :
if mystring and mystring.strip():
print "not blank string"
else:
print "blank string"
Verifique o comprimento da lista fornecida pelo método split ().
if len(your_string.split()==0:
print("yes")
Ou Compare a saída do método strip () com null.
if your_string.strip() == '':
print("yes")
len()
funciona em strings. Além disso, o OP não estava pedindo para testar a sequência vazia, mas a sequência que era todos os espaços. Seu segundo método não é ruim. Além disso, suas parênteses em torno do condicional não são necessárias em python.
==0
com==1
if len(your_string.split())==0:
-> if not your_string.split():
, if your_string.strip() == '':
-> if not your_string.strip():
. De qualquer forma, a primeira é inferior às soluções existentes e a segunda já foi mencionada em outras respostas.
Aqui está uma resposta que deve funcionar em todos os casos:
def is_empty(s):
"Check whether a string is empty"
return not s or not s.strip()
Se a variável for None, ela irá parar em not s
e não avaliar mais (desde not None == True
). Aparentemente, o strip()
método cuida dos casos usuais de tab, nova linha etc.
not None == True
provavelmente é mais claro apenas dizer None is False
. Além disso, ==
não deve ser usado para essas comparações.
Suponho que, no seu cenário, uma string vazia seja verdadeiramente vazia ou que contenha todo o espaço em branco.
if(str.strip()):
print("string is not empty")
else:
print("string is empty")
Observe que isso não verifica se há None
Eu usei o seguinte:
if str and not str.isspace():
print('not null and not empty nor whitespace')
else:
print('null or empty or whitespace')
None
?
A semelhança com o método estático da string c # éNullOrWhiteSpace.
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
return (str is None) or (str == "") or (str.isspace())
None
e ""
são falsos, então você pode:return not str or str.isspace()
U+00A0
ou um código sem quebraALT+160
. Parece corrigido no Python 2.7, no entanto.