Jak mogę sprawdzić, czy ciąg znaków zawiera tylko białe znaki?
Przykładowe ciągi:
" "
(przestrzeń, przestrzeń, przestrzeń)" \t \n "
(spacja, tabulacja, spacja, nowa linia, spacja)"\n\n\n\t\n"
(nowa linia, nowa linia, nowa linia, karta, nowa linia)
U+00A0
lubALT+160
. Wygląda jednak na naprawiony w Pythonie 2.7.None
, lub''
if len(str) == 0 or str.isspace():
len(my_str) == 0
można również napisaćnot my_str
.źródło
True
doNone
?Chcesz użyć tej
isspace()
metodyTo jest zdefiniowane na każdym obiekcie łańcuchowym. Oto przykład użycia dla konkretnego przypadku użycia:
źródło
Możesz użyć tej
str.isspace()
metody.źródło
dla tych, którzy oczekują zachowania jak apache StringUtils.isBlank lub Guava Strings.isNullOrEmpty :
źródło
Sprawdź długość listy podaną za pomocą metody split ().
Lub Porównaj wynik metody strip () z wartością null.
źródło
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:
Jeśli zmienna to None, zatrzyma się na
not s
i nie będzie dalej oceniać (odnot None == True
). Najwyraźniejstrip()
metoda zajmuje się zwykłymi przypadkami tabulacji, nowej linii itp.źródło
not None == True
prawdopodobnie jest to łatwiejsze do powiedzeniaNone 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.
Pamiętaj, że to nie sprawdza
None
źródło
Użyłem następujących:
źródło
None
?Aby sprawdzić, czy ciąg znaków jest tylko spacją lub znakiem nowej linii
Użyj tego prostego kodu
źródło
Podobieństwo do metody statycznej typu c # string toNullOrWhiteSpace.
źródło
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()