2016-10-05 74 views
-2

我有一個數據庫迭代14時python列表超出範圍?

這裏指向一個術語索引列表是我的代碼:

for doc in TSS: 
    tokens = word_tokenize(doc[1]) 
    tokens = [token.lower() for token in tokens if len(token) > 2] 
    tokens = [token for token in tokens if token not in words] 
    tokens = [stemmer.stem(token) for token in tokens] 
    final_tokens.extend(tokens) 
    sql = """SELECT id_term FROM tss_terms WHERE tss_terms.term IN %s""" 
    pram = [final_tokens] 
    cursor.execute(sql, pram) 
    ids = list(cursor.fetchall()) 
    count = 0 
    data[doc[1]] = {'tf': {}, 'ntf': {}} 
    for token in final_tokens: 
     data[doc[1]]['tf'][token] = freq(token,final_tokens) 
     data[doc[1]]['ntf'][token] = tf(token,final_tokens) 
     query = """INSERT INTO tss_term_freq(id_term,id_doc,tf,normalized_tf)VALUES(%s,%s,%s,%s)""" 
     param = [ids[count],doc[0],data[doc[1]]['tf'][token],data[doc[1]]['ntf'][token]] 
     #cursor.execute(query, param) 
     count = count + 1 
    del final_tokens[:] 
    print count 

ids列表總是error : list index out of range在14迭代。 TSS [13]的

的值是這樣的:

(5927L, 'PERHITUNGAN POHON KELAPA SAWIT PADA CITRA FOTO UDARA\r\nYANG BERBASIS BENTUK MAHKOTA POHON') 

則TSS [14]的值是這樣的:

(6698L, 'SINKRONISASI WAKTU METER LISTRIK BERDASARKAN GLOBAL POSITIONING SYSTEM (GPS) PADA SUPERVISORY CONTROL AND DATA ACQUISITION (SCADA) BERBASIS WEB') 

TSS包含文檔ID和在論文的標題我的大學

任何人都可以顯示我的錯誤並修復它嗎?

請幫助:(

+0

其價值行是問題嗎? – Efferalgan

+0

分享棧跟蹤和'TSS [13]'和'T的值SS [14]' –

+0

參數行是問題 我評論了下面的行,以便它不執行查詢命令 –

回答

0

方式列表中的「ID」聲明是錯誤的。 我沒有得到你在那裏幹什麼。 但是,如果要存儲的使用fetchall()函數返回,則所有值使用for循環做。 聲明一個空列表ID。 ID = [] 使用一個for循環把所有的值。 ,並保存在列表中使用 id.append(值)

+0

你提出的建議與已經存在的部分代碼完全一樣。如果現有的效率不高,我不會感到驚訝。 –

+0

哇,只有非常小的差異影響這麼多..謝謝反正:) –