在Python中优雅检查-1

时间:2014-07-15 16:51:29

标签: python string

是否有一种优雅的方法来检查str.find()实例方法返回的值-1?我发现测试值为-1非常难看,但我不想说<这可能导致混淆。

if (myString.find('foo') == -1):
    print("foo not found in ", myString)

2 个答案:

答案 0 :(得分:13)

如果您不需要索引,请不要使用str.find()。使用in来测试子字符串;或者在这种情况下not in否定测试:

if 'foo' not in myString:
    print("foo not found in", myString)

答案 1 :(得分:3)

作为参考,如果您确实需要索引,还有另一种用于查找索引的字符串实例方法:str.index

str.indexstr.find之间的区别在于,如果找不到子字符串,str.indexraise ValueError,这可能更适合您的用例(例如,你希望子字符串通常存在):

try:
    index = myString.index("foo")
except ValueError:
    print("'foo' not found in '{0}'.".format(myString))
else:
    # 'foo' was found, 'index' has been assigned