Réponses:
Utilisez la str.isspace()
méthode:
Renvoie
True
s'il n'y a que des espaces dans la chaîne et s'il y a au moins un caractère,False
sinon.Un caractère est un espace si dans la base de données de caractères Unicode (voir unicodedata ), soit sa catégorie générale est Zs («Séparateur, espace»), soit sa classe bidirectionnelle est WS, B ou S.
Combinez cela avec un cas spécial pour gérer la chaîne vide.
Alternativement, vous pouvez utiliser str.strip()
et vérifier si le résultat est vide.
None
, ou''
if len(str) == 0 or str.isspace():
len(my_str) == 0
peut également être écrit not my_str
.
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]
True
pour None
?
Vous souhaitez utiliser la isspace()
méthode
str. isspace ()
Renvoie vrai s'il n'y a que des espaces dans la chaîne et s'il y a au moins un caractère, faux sinon.
Cela est défini sur chaque objet chaîne. Voici un exemple d'utilisation pour votre cas d'utilisation spécifique:
if aStr and (not aStr.isspace()):
print aStr
Vous pouvez utiliser la str.isspace()
méthode.
pour ceux qui s'attendent à un comportement comme l'apache StringUtils.isBlank ou Guava Strings.isNullOrEmpty :
if mystring and mystring.strip():
print "not blank string"
else:
print "blank string"
Vérifiez la longueur de la liste donnée par la méthode split ().
if len(your_string.split()==0:
print("yes")
Ou Comparez la sortie de la méthode strip () avec null.
if your_string.strip() == '':
print("yes")
len()
fonctionne sur les chaînes. De plus, l'OP ne demandait pas de tester la chaîne vide, mais une chaîne contenant tous les espaces. Cependant, votre deuxième méthode n'est pas mauvaise. De plus, vos parens entourant le conditionnel ne sont pas nécessaires en python.
==0
par==1
if len(your_string.split())==0:
-> if not your_string.split():
, if your_string.strip() == '':
-> if not your_string.strip():
. En tout cas, la première est inférieure aux solutions existantes, et la seconde a déjà été mentionnée dans d'autres réponses.
Voici une réponse qui devrait fonctionner dans tous les cas:
def is_empty(s):
"Check whether a string is empty"
return not s or not s.strip()
Si la variable est None, elle s'arrêtera à not s
et n'évaluera plus (depuis not None == True
). Apparemment, la strip()
méthode prend en charge les cas habituels de tabulation, de nouvelle ligne, etc.
not None == True
il est probablement plus clair de dire None is False
. En outre, ==
ne doivent pas être utilisés pour ces comparaisons.
Je suppose que dans votre scénario, une chaîne vide est une chaîne qui est vraiment vide ou qui contient tout l'espace blanc.
if(str.strip()):
print("string is not empty")
else:
print("string is empty")
Notez que cela ne vérifie pas None
J'ai utilisé ce qui suit:
if str and not str.isspace():
print('not null and not empty nor whitespace')
else:
print('null or empty or whitespace')
None
?
La ressemblance avec la méthode statique de chaîne c # estNullOrWhiteSpace.
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
et ""
sont falsy, vous pouvez simplement:return not str or str.isspace()
U+00A0
ouALT+160
. Semble fixe dans Python 2.7, cependant.