我如何制作:
if str(variable) == [contains text]:
判断条件?
(或其他什么,因为我很确定我刚写的完全是错的)
我有一个列表,想要检查从列表中 random.choice
是否是["",]
(空白)或包含["text",]
。
我如何制作:
if str(variable) == [contains text]:
判断条件?
(或其他什么,因为我很确定我刚写的完全是错的)
我有一个列表,想要检查从列表中 random.choice
是否是["",]
(空白)或包含["text",]
。
if variable != "":
etc.
但是你可以将其缩写为以下形式:
if variable:
etc.
解释:实际上,if
语句通过计算给定逻辑表达式的值(True
或 False
)来工作。如果您只是使用变量名(或文字字符串,比如 "hello"),而不是一个逻辑测试,规则是:一个空字符串计算为 False,其它所有字符串计算为 True。空列表和数字零也计算为 False,而大多数其他内容都计算为 True。
== True
这部分。 - alexis如果变量不存在
- Andrea Bergonzois
测试对象的相等性,只有当所有空字符串都被“埋葬”(表示为对同一存储对象的引用)时才能按预期工作,而Python不能保证这一点。(它可能在Cpython中工作,但您依赖于特定于实现的行为。) - alexis检查字符串是否为空的“Pythonic”方法是:
import random
variable = random.choice(l)
if variable:
# got a non-empty string
else:
# got an empty string
只需使用 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
''
评估为False
,因此如果您想在s
为空字符串时得到True
,则可以使用if not s
。 - senderle默认情况下,空字符串为False:
>>> if not "":
... print("empty")
...
empty
有时候我们在引号之间会有更多的空格,那么可以采用这种方法
a = " "
>>> bool(a)
True
>>> bool(a.strip())
False
if not a.strip():
print("String is empty")
else:
print("String is not empty")
对于Python 3,您可以使用bool()函数。
>>> bool(None)
False
>>> bool("")
False
>>> bool("a")
True
>>> bool("ab")
True
>>> bool("9")
True
bool(0)
返回 False
。 - kaushal agrawalbool(0)
返回 False
是可以预料的。为什么不应该呢? - Thai Tranelement = random.choice(myList)
if element:
# element contains text
else:
# element is empty ''
我如何创建一个:
if str(variable) == [包含文本]:
条件?
也许最直接的方法是:
if str(variable) != '':
# ...
if not ...
的解决方案测试相反的条件。string = "TEST"
try:
if str(string):
print "good string"
except NameError:
print "bad string"
string = ""
。 - AhmFMlen(variable) != 0
如果不包含文本,则:
len(variable) == 0
if str(variable) == "my text":
吗? - Simon Bergot