str.find()
-1
如果找不到,总是返回。如果找不到str.find()
,我可以写一个表达式来代替吗?return None
问问题
200 次
3 回答
7
你的意思是这样的吗?
def find2(str, substr):
result = str.find(substr)
return result if result != -1 else None
在 Python 2.4 中,将最后一行更改为
if result != -1:
return result
else:
return None
于 2012-11-22T08:43:15.133 回答
5
None if str.find() < 0 else str.find()
如果代码重复困扰你(它应该):
index = str.find()
None if index < 0 else index
在 2.5中添加了三元条件。所以如果你有旧版本的 Python,你可以这样做:
def my_find(str, sub_str)
index = str.find(sub_str)
if index < 0:
return None
else:
return index
于 2012-11-22T08:42:55.087 回答
3
如果我总结一下,你想要的东西:
- 是一个表达式
- 评估到
None
何时未找到 - 找到时评估索引
- 不使用三元(以便 Python 2.4 可以处理)
我能想出的满足所有要求的唯一解决方案是这个奇怪的事情:
(lambda x: x and x - 1)((str.find(substr) + 1) or None)
例如:
>>> (lambda x: x and x - 1)(('abcd'.find('b') + 1) or None)
1
>>> (lambda x: x and x - 1)(('abcd'.find('_') + 1) or None)
>>>
我没有安装 Python 2.4 来测试它,所以我只能希望它能正常工作。
于 2012-11-22T09:31:14.627 回答