Python中ValueError的处理

Python中ValueError的处理

ValueError

有时候使用index()方法查找列表中的元素,如果元素不存在,Python会报ValueError错误,如上图,substring not found,会导致代码运行中断。

当我们也不确定是否存在某一个元素时,我们应该强化代码处理这种问题的能力,这里提供三种解决方法。

find()方法

find()方法可以查找字符串中是否存在某个子字符串,如果存在返回子字符串的索引,如果不存在返回-1。

for word in word_list:
    i = quote.find(word)
    print(f"{i} - {word}")

唯一要注意的是,由于它返回的是-1,如果代码后续需要使用到索引,需要判断这个-1是否合理。

s = "abcdef"
i = s.find("k")  # returns -1, since there is no 'k'
print(s[i])
print(s[i] if i > -1 else "###")

try-except方法

几乎是对代码运行不自信的最好处理方法,try-except方法可以捕获异常,避免程序中断。

for word in word_list:
    try:
        i = quote.index(word)
        print(f"{i} - {word}")
    except ValueError:
        print(f"{word} not found")

in方法

在查找前使用in作为一个先决判断。

for word in word_list:
    i = quote.index(word) if word in quote else "#"
    print(f"{i} - {word}")

代码已经放进了星球里。

Did you find this page helpful? Consider sharing it 🙌

Zhen Lu
Zhen Lu
Biostatistician, Clinical Epidemiologist

Walk with the master