ValueError:在 Python 中找不到子字符串
ValueError: substring not found in Python
当我们将字符串中不存在的值传递给str.index()
方法时,会出现 Python“ValueError: substring not found”。要解决错误,请改用find()
方法,例如my_str.find('z')
,或使用try/except
块处理错误。
下面是错误如何发生的示例。
主程序
my_str = 'apple' # ⛔️ ValueError: substring not found idx = my_str.index('z')
我们传递给该index
方法的子字符串不包含在字符串中,这导致了ValueError
.
解决此问题的一种方法是改用该str.find()
方法。
主程序
my_str = 'apple' idx = my_str.find('z') print(idx) # 👉️ -1
str.find方法返回字符串中提供的子字符串第一次出现的索引。
-1
如果在字符串中找不到子字符串,则该方法返回。
index()
或者,您可以在调用该方法之前检查字符串中是否存在子字符串。
主程序
my_str = 'apple' if 'z' in my_str: idx = my_str.index('z') print(idx) else: # 👇️ this runs print('substring is not in string')
in 运算符
测试成员资格。
例如,如果是 的成员,则x in s
计算为 ,否则计算为。True
x
s
False
str.index
方法返回字符串中提供的子字符串第一次出现的索引。
ValueError
如果在字符串中找不到子字符串,则该方法会引发 a 。
您还可以使用try/except
块来处理在字符串中找不到子字符串的情况。
主程序
my_str = 'apple' try: idx = my_str.index('z') print(idx) except ValueError: # 👇️ this runs print('substring is not in string')
index()
我们在字符串上调用该方法,如果ValueError
引发 a,
except
则运行该块。
您也可以使用单行if/else
语句。
主程序
my_str = 'apple' result_1 = my_str.index('z') if 'z' in my_str else None print(result_1) # 👉️ None result_2 = my_str.index('a') if 'a' in my_str else None print(result_2) # 👉️ 0
如果字符串中存在子字符串,则返回
index()
使用子字符串调用方法的结果,否则返回None
。
结论
当我们将字符串中不存在的值传递给str.index()
方法时,会出现 Python“ValueError: substring not found”。要解决错误,请改用find()
方法,例如my_str.find('z')
,或使用try/except
块处理错误。