str.find()
-1
如果找不到则总是返回.我能写的,而不是表达str.find()
和return None
如果没有发现?
你的意思是这样的吗?
def find2(str, substr):
result = str.find(substr)
return result if result != -1 else None
Run Code Online (Sandbox Code Playgroud)
在Python 2.4中,将最后一行更改为
if result != -1:
return result
else:
return None
Run Code Online (Sandbox Code Playgroud)
None if str.find() < 0 else str.find()
Run Code Online (Sandbox Code Playgroud)
如果代码重复困扰你(它应该):
index = str.find()
None if index < 0 else index
Run Code Online (Sandbox Code Playgroud)
2.5 中加入了三元条件.因此,如果你有一个旧版本的Python,你可以这样做:
def my_find(str, sub_str)
index = str.find(sub_str)
if index < 0:
return None
else:
return index
Run Code Online (Sandbox Code Playgroud)
如果我总结一下,你想要的东西是:
None
未找到时我能想出的满足所有要求的唯一解决方案是这个奇怪的事情:
(lambda x: x and x - 1)((str.find(substr) + 1) or None)
Run Code Online (Sandbox Code Playgroud)
例如:
>>> (lambda x: x and x - 1)(('abcd'.find('b') + 1) or None)
1
>>> (lambda x: x and x - 1)(('abcd'.find('_') + 1) or None)
>>>
Run Code Online (Sandbox Code Playgroud)
我没有安装 Python 2.4 来测试它,所以我只能希望它能工作。