Ответы:
Используйте 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, однако.