检查输出是否返回ValueError

时间:2019-06-21 09:11:30

标签: python valueerror

我想在python字符串中检索字符的索引。但是当找不到字符串时,该函数将返回ValueError: substring not found

由于我在if语句中具有该函数,因此它破坏了我的代码。

我如何验证以下代码行的输出是否不提供ValueError输出:mystring.index('string I look for')

3 个答案:

答案 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>