我想在python字符串中检索字符的索引。但是当找不到字符串时,该函数将返回ValueError: substring not found
由于我在if
语句中具有该函数,因此它破坏了我的代码。
我如何验证以下代码行的输出是否不提供ValueError
输出:mystring.index('string I look for')
答案 0 :(得分:1)
您可以先创建一个函数来对其进行检查
def check(s, target):
if target in s:
return s.index(target)
else:
return None
s = 'Yeah, I\'m gonna take my horse to the old town road'
check(s, 'g')
# 10
或者使用lambda函数,如果您打算只使用一次或两次
check = lambda s, t: s.index(t) if t in s else None
s = 'Yeah, I\'m gonna take my horse to the old town road'
check(s, 'old')
# 37
s[37]
# 'o'
答案 1 :(得分:0)
您可以使用try except
捕获引发的异常:
In [1]: s = "hello world"
In [1]: s = "hello world"
In [2]: s.index("a")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-1a10a9a0bcff> in <module>
----> 1 s.index("a")
ValueError: substring not found
In [3]: try:
...: s.index("a")
...: except ValueError:
...: pass # or do something else. This means that the character was not found
答案 2 :(得分:0)
请参阅8.3。处理异常here
TRY / EXCEPT应该可以解决问题。例如:
try:
mystring.index('c')
except:
print('substring not found')
如果字符串中存在字符'c',它将返回索引,如果不存在,它将执行您指定的操作。在这种情况下,它将打印“找不到子字符串”并继续执行代码而不会破坏它
这将有任何错误。如果您想更具体一些,并针对不同类型的错误执行不同的操作,则还可以按错误类型指定操作...例如
except ValueError:
<do something>