Как проверить, является ли str (переменная) пустым или нет? - PullRequest
58 голосов
/ 29 марта 2012

Как мне сделать:

if str(variable) == [contains text]:

состояние?

(или что-то еще, потому что я почти уверен, что то, что я только что написал, совершенно неверно)

Я пытаюсь проверить, является ли random.choice из моего списка ["",] (пусто) или содержит ["text",].

Ответы [ 10 ]

113 голосов
/ 29 марта 2012

Вы можете просто сравнить вашу строку с пустой строкой:

if variable != "":
    etc.

Но вы можете сократить это следующим образом:

if variable:
    etc.

Объяснение: if на самом деле работает с помощью вычисленийзначение логического выражения, которое вы ему даете: True или False.Если вместо логического теста вы просто используете имя переменной (или буквенную строку, например «hello»), правило будет следующим: пустая строка считается ложной, все остальные строки считаются истинными.Пустые списки и нулевое число также считаются ложными, а большинство других вещей считаются истинными.

15 голосов
/ 29 марта 2012

"Pythonic" способ проверить, является ли строка пустой:

import random
variable = random.choice(l)
if variable:
    # got a non-empty string
else:
    # got an empty string
12 голосов
/ 29 марта 2012

Пустые строки по умолчанию имеют значение False:

>>> if not "":
...     print("empty")
...
empty
7 голосов
/ 29 марта 2012

Просто скажите if s или if not s. Как в

s = ''
if not s:
    print 'not', s

Так что в вашем конкретном примере, если я правильно понимаю ...

>>> import random
>>> l = ['', 'foo', '', 'bar']
>>> def default_str(l):
...     s = random.choice(l)
...     if not s:
...         print 'default'
...     else:
...         print s
... 
>>> default_str(l)
default
>>> default_str(l)
default
>>> default_str(l)
bar
>>> default_str(l)
default
4 голосов
/ 29 марта 2012
element = random.choice(myList)
if element:
    # element contains text
else:
    # element is empty ''
3 голосов
/ 05 апреля 2017

Для Python 3 вы можете использовать bool ()

>>> bool(None)
False
>>> bool("")
False
>>> bool("a")
True
>>> bool("ab")
True
>>> bool("9")
True
2 голосов
/ 29 марта 2012

Как мне сделать: if str(variable) == [contains text]: условие?

Пожалуй, самый прямой путь:

if str(variable) != '':
  # ...

Обратите внимание, что решения if not ... проверяют противоположное условие.

1 голос
/ 29 августа 2018

Когда-то у нас будет больше пробелов между кавычками, тогда используйте этот подход

a = "   "
>>> bool(a)
True
>>> bool(a.strip())
False

if not a.strip():
    print("String is empty")
else:
    print("String is not empty")
0 голосов
/ 09 мая 2018
string = "TEST"
try:
  if str(string):
     print "good string"
except NameError:
     print "bad string"
0 голосов
/ 09 января 2016

, если переменная содержит текст, то:

len(variable) != 0

этого не

len(variable) == 0

...