如何检查一个str(变量)是否为空?


78

我该如何做:

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

健康)状况?

(或某些原因,因为我很确定我刚才写的东西是完全错误的)

我正在尝试检查random.choice列表中的a是["",](空白)还是包含["text",]


你的意思是if str(variable) == "my text":
西蒙·贝格

您似乎有些困惑,我建议您阅读python教程
里克·波吉

3
可能
罗纳克·沙

Answers:


151

您可以将您的字符串与空字符串进行比较:

if variable != "":
    etc.

但是您可以将其缩写为:

if variable:
    etc.

说明:Anif通过为您提供的逻辑表达式计算值来实际起作用:TrueFalse。如果仅使用变量名(或诸如“ hello”之类的文字字符串)而不是逻辑测试,则规则是:空字符串计为False,所有其他字符串计为True。空列表和数字零也算作假,其他大多数情况也算作真。


呵呵,我有点理解if,true和False的原理。魔兽争霸3触发编辑器:“如果(此单位等于该单位)== True”
user1275670'1

我猜您也可以== True在Warcraft编辑器中省略该部分。
alexis

是的 从未真正想到过嘻嘻,但这绝对有帮助。
user1275670'4

这不是相同的。不要这样做。在[14]中:a =“”在[15]中:如果a.replace('',):...:打印1 ...:在[16]中:如果a.replace('',' ')==“”:...:打印1 ...:1
Brett Hardin

1
哦,对了,@ AndreaBergonzo说的是:当您将字符串与“”进行比较时,您正在检查它是否为空-视为False。
Alexis


12

默认情况下,空字符串为False:

>>> if not "":
...     print("empty")
...
empty

10

只是说if sif 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

我不明白。因此,如果我执行“ variable = random.choice(list)”并且变量为空的“”,那么我可以执行条件“ if variable:”,并且...是的,我什么都没有您写了……
user1275670

@ user1275670,听起来您确实了解。但是我添加了另一个示例,以防万一。简而言之,其''值为False,因此,如果要获取True何时s为空字符串,则说if not s
senderle

6

对于python 3,可以使用bool()

>>> bool(None)
False
>>> bool("")
False
>>> bool("a")
True
>>> bool("ab")
True
>>> bool("9")
True

这本来是完美的,但会bool(0)返回False
kaushal agrawal

1
@kaushalagrawalbool(0)返回False对我来说是可以预期的。为什么不应该呢?
泰国Tran

真的,我不记得了/明白为什么我感到如此
kaushal阿格拉瓦尔

6

有时我们在引号之间有更多的空格,然后使用这种方法

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

if not a.strip():
    print("String is empty")
else:
    print("String is not empty")

4
element = random.choice(myList)
if element:
    # element contains text
else:
    # element is empty ''

3

如何制作if str(variable) == [contains text]:条件?

也许最直接的方法是:

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

请注意,这些if not ...解决方案会测试相反的条件。


1

如果变量包含文本,则:

len(variable) != 0

它不

len(variable) == 0


1

在if-else中使用“ not

x = input()

if not x:
   print("Value is not entered")
else:
   print("Value is entered")

0
string = "TEST"
try:
  if str(string):
     print "good string"
except NameError:
     print "bad string"

4
通常,在StackOverflow中对张贴的代码进行注释是一种好习惯。
麦达斯国王(King Midas '18

尽管此答案可能是正确且有用的,但如果您在其中包含一些解释以说明它如何帮助解决问题,则最好使用该答案。如果发生更改(可能不相关)导致它停止工作,并且用户需要了解它曾经如何工作,那么这在将来特别有用。
Erty Seidohl '18年

抱歉,我的英语太差了,但是以后我会记住对我的帖子发表评论。
Cornea Valentin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.