Python string.find() 报错 "切片索引必须是整数或 None 或具有 __index__ 方法
我在用Python做一个简单的子字符串匹配,昨晚还好好的,但从早上开始这段代码就出错了。看起来这个错误是个常见问题,有人能告诉我为什么会这样吗?
if string.find(row[1],drug) != -1:
print "abstract id = ", row[0],"Drug found=", drug
错误信息:
File "./substring.py", line 31, in <module>
if string.find(row[1],drug) != -1:
TypeError: slice indices must be integers or None or have an __index__ method
这里的 row[1]
和 drug
都是简单的字符串。
2 个回答
8
什么是 string
?
如果它是模块 string
,那就可以正常工作。
但如果它是一个字符串对象(错误信息提示可能是这种情况),那么第二个参数是你想要开始搜索的位置。这个位置必须是一个整数、None
,或者是一个有 __index__
方法的对象。因为 drug
是一个字符串,所以你会遇到错误。
你可能想要的是:
if row[1].find(drug) != -1:
不过对于简单的子字符串检查,使用 in
会更好:
if drug in row[1]:
5
与其使用 string.find(row[1], drug)
,不如试试 row[1].find(drug)
。这个 .find()
方法会告诉你字符串中第一次出现的地方的索引位置。