Ответы:
Используйте str.isspace()
метод:
Возврат,
True
если в строке есть только пробельные символы, и если есть хотя бы один символ, вFalse
противном случае.Символ является пробелом, если в базе данных символов Unicode (см. Unicodedata ) либо его общая категория - Zs («Разделитель, пробел»), либо двунаправленный класс - WS, B или S.
Объедините это с особым случаем для обработки пустой строки.
Кроме того, вы можете использовать str.strip()
и проверить, если результат пуст.
None
, или''
if len(str) == 0 or str.isspace():
len(my_str) == 0
тоже можно написать not my_str
.
>>> tests = ['foo', ' ', '\r\n\t', '', None]
>>> [not s or s.isspace() for s in tests]
[False, True, True, True, True]
True
к None
?
Вы хотите использовать isspace()
метод
ул. isspace ()
Вернуть true, если в строке есть только пробельные символы и хотя бы один символ, в противном случае - false.
Это определено для каждого строкового объекта. Вот пример использования для вашего конкретного случая использования:
if aStr and (not aStr.isspace()):
print aStr
Вы можете использовать str.isspace()
метод.
для тех, кто ожидает такого поведения, как apache StringUtils.isBlank или Guava Strings.isNullOrEmpty :
if mystring and mystring.strip():
print "not blank string"
else:
print "blank string"
Проверьте длину списка, заданного методом split ().
if len(your_string.split()==0:
print("yes")
Или Сравните вывод метода strip () с нулем.
if your_string.strip() == '':
print("yes")
len()
работает со строками. Кроме того, OP не запрашивал проверку на пустую строку, а на строку, в которой были все пробелы. Ваш второй метод не плох, хотя. Кроме того, ваши парни, окружающие условные выражения, не нужны в python.
==0
на==1
if len(your_string.split())==0:
-> if not your_string.split():
, if your_string.strip() == '':
-> if not your_string.strip():
. В любом случае, первое уступает существующим решениям, а второе уже упоминалось в других ответах.
Вот ответ, который должен работать во всех случаях:
def is_empty(s):
"Check whether a string is empty"
return not s or not s.strip()
Если переменная None, она остановится not s
и не будет оцениваться дальше (с тех пор not None == True
). Видимо, strip()
метод заботится о обычных случаях табуляции, перевода строки и т. П.
not None == True
как, наверное, яснее просто сказать None is False
. Кроме того, ==
не следует использовать для этих сравнений.
Я предполагаю, что в вашем сценарии пустая строка - это действительно пустая строка или строка, которая содержит все пробелы.
if(str.strip()):
print("string is not empty")
else:
print("string is empty")
Обратите внимание, что это не проверяет None
Я использовал следующее:
if str and not str.isspace():
print('not null and not empty nor whitespace')
else:
print('null or empty or whitespace')
None
?
Сходство со статическим методом c # string isNullOrWhiteSpace.
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
и ""
в falsy, так что вы можете просто:return not str or str.isspace()
U+00A0
илиALT+160
. Выглядит исправлено в Python 2.7, однако.