Odpowiedzi:
Użyj str.isspace()
metody:
Zwróć,
True
jeśli w ciągu znajdują się tylko znaki spacji i co najmniej jeden znak,False
przeciwnym razie.Znak jest spacją, jeśli w bazie danych znaków Unicode (patrz unicodedata ) albo jego ogólną kategorią jest Zs („Separator, spacja”), albo jego dwukierunkowa klasa to WS, B lub S.
Połącz to ze specjalnym przypadkiem do obsługi pustego ciągu.
Alternatywnie możesz użyć str.strip()
i sprawdzić, czy wynik jest pusty.
None
, lub''
if len(str) == 0 or str.isspace():
len(my_str) == 0
można również napisać not my_str
.
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]
True
do None
?
Chcesz użyć tej isspace()
metody
str. isspace ()
Zwraca wartość true, jeśli w ciągu znajdują się tylko znaki spacji i co najmniej jeden znak, w przeciwnym razie wartość false.
To jest zdefiniowane na każdym obiekcie łańcuchowym. Oto przykład użycia dla konkretnego przypadku użycia:
if aStr and (not aStr.isspace()):
print aStr
Możesz użyć tej str.isspace()
metody.
dla tych, którzy oczekują zachowania jak apache StringUtils.isBlank lub Guava Strings.isNullOrEmpty :
if mystring and mystring.strip():
print "not blank string"
else:
print "blank string"
Sprawdź długość listy podaną za pomocą metody split ().
if len(your_string.split()==0:
print("yes")
Lub Porównaj wynik metody strip () z wartością null.
if your_string.strip() == '':
print("yes")
len()
działa na łańcuchach. Ponadto OP nie poprosił o przetestowanie pustego łańcucha, ale łańcucha zawierającego wszystkie spacje. Twoja druga metoda nie jest jednak zła. Ponadto, twoje pareny otaczające warunkowe nie są potrzebne w Pythonie.
==0
ją==1
if len(your_string.split())==0:
-> if not your_string.split():
, if your_string.strip() == '':
-> if not your_string.strip():
. W każdym razie pierwsze jest gorsze od istniejących rozwiązań, a drugie zostało już wspomniane w innych odpowiedziach.
Oto odpowiedź, która powinna działać we wszystkich przypadkach:
def is_empty(s):
"Check whether a string is empty"
return not s or not s.strip()
Jeśli zmienna to None, zatrzyma się na not s
i nie będzie dalej oceniać (od not None == True
). Najwyraźniej strip()
metoda zajmuje się zwykłymi przypadkami tabulacji, nowej linii itp.
not None == True
prawdopodobnie jest to łatwiejsze do powiedzenia None is False
. Nie ==
należy również używać do tych porównań.
Zakładam, że w twoim scenariuszu pusty ciąg jest naprawdę pusty lub zawiera wszystkie białe znaki.
if(str.strip()):
print("string is not empty")
else:
print("string is empty")
Pamiętaj, że to nie sprawdza None
Użyłem następujących:
if str and not str.isspace():
print('not null and not empty nor whitespace')
else:
print('null or empty or whitespace')
None
?
Podobieństwo do metody statycznej typu c # string toNullOrWhiteSpace.
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
i ""
są falsy, więc można po prostu:return not str or str.isspace()
U+00A0
lubALT+160
. Wygląda jednak na naprawiony w Pythonie 2.7.