Відповіді:
Використовуйте 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 ()
Повернути істину, якщо в рядку є лише символи пробілу, а принаймні один символ, інакше помилковий.
Це визначено для кожного об'єкта рядка. Ось приклад використання для вашого конкретного випадку використання:
if aStr and (not aStr.isspace()):
print aStr
Можна використовувати str.isspace()
метод.
для тих, хто очікує такої поведінки, як апаш 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 () з null.
if your_string.strip() == '':
print("yes")
len()
працює на струнах. Крім того, ОП не просив тестувати порожню рядок, а для рядка, який був усіма пробілами. Ваш другий метод не поганий. Крім того, ваші парени, що оточують умовне, не потрібні в 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 jeNullOrWhiteSpace.
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
і ""
фальшиве, тож ви можете просто:return not str or str.isspace()
U+00A0
абоALT+160
. Однак виправлено в Python 2.7.