2012-01-04 33 views
1

我想在Python中做一個簡單的子字符串匹配,雖然我記得昨天晚上它工作正常,但自早上這段代碼給出了以下錯誤。這似乎是一個已知的錯誤,任何人都可以提出爲什麼會發生?Python string.find()給出錯誤「切片索引必須是整數或無或有__index__方法」

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都是簡單的字符串。

+0

是什麼'row'? – 2012-01-04 16:51:44

+1

這是否包含'import string'來使用'string'包?或者你有一個名爲'string'的字符串變量?在你的例子中,「string」是什麼? – 2012-01-04 16:56:15

+0

我已經使用'導入字符串'和字符串不是一個變量。雖然我將它改爲row [1] .find(drug),但它仍然有效,但我仍然好奇上面的代碼是如何工作的。 – pseudocode 2012-01-04 17:05:49

回答

5

而不是string.find(row[1], drug),請嘗試row[1].find(drug).find()方法將爲您提供該字符串第一次出現的索引。

8

什麼是string

這將工作,如果它是模塊string

如果它是一個字符串對象(錯誤表明是這種情況),那麼第二個參數就是它應該開始搜索的位置。該位置必須是整數或None或帶有__index__方法的對象。 drug是一個字符串,所以你得到一個錯誤。

你可能想的是:

if row[1].find(drug) != -1: 

但最好使用in簡單的字符串檢查:

if drug in row[1]: 
相關問題