我试图用Python解析以下字符串:At 11:00 am EST, no delay, 7 lane(s) open
。我需要阅读它以查看它是否包含字符串no delay
。我使用以下内容来解析它:contents_of_tunnel.find("no delay")
。
这很好。但是当我在if/else
中使用它时,如下所示:
>>> if contents_of_tunnel.find("no delay") == True:
... print 1
... else:
... print 0
...
0
归零。为什么是这样?我认为问题出在第一行,即第一行:>>> if contents_of_tunnel...
感谢您的帮助。
答案 0 :(得分:6)
也许你想要这样的东西:
if 'no delay' in contents_of_tunnel: print 1
else: print 0
或只是
print 1 if 'no delay' in contents_of_tunnel else 0
答案 1 :(得分:4)
find(...)
S.find(sub [,start [,end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
这将打印1的唯一方法是contents_of_tunnel
以“无延迟”开头,因为返回的索引将为0. -1评估为True
。
您应该使用:
if contents_of_tunnel.find("no delay") != -1:
或
if "no delay" in contents_of_tunnel:
或
try:
index = contents_of_tunnel.index("no delay")
# substring found
except ValueError:
# substring not found
答案 2 :(得分:0)
原因是contents_of_tunnel.find("no delay")
返回一个数字。因此,请使用== True
,而不是使用!= -1
。这样它就可以达到你的预期。