如何访问从数据库获取的列表元素并对它们执行nltk方法?

时间:2015-07-19 10:31:48

标签: python sqlite nltk

import sqlite3
import string
import nltk
conn = sqlite3.connect('db.sqlite3')

k=22
c=""
cur=conn.cursor()

cur.execute('SELECT KEYWORDS from Content WHERE ID=?',(k,))
data=cur.fetchone()
cur.execute('SELECT KEYWORDS from CONTENT')
c=cur.fetchall()
print("content keywords are %s" % c)
for i in range(len(c)):
    d = nltk.word_tokenize(c[i])
    for j in range(len(d)):
        print("tokens are %s" % d[j])

上面的python代码在行TypeError: expected string or buffer error中给出了d = nltk.word_tokenize(c[i])。我是python编程的新手,有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

c[i]的每个值ccur.fetchall()的结果)是一个元素tuple。您需要使用c[i][0]代替c[i]

顺便说一句,请避免使用for i in range(len(x)): [...] x[i]模式并使用for e in x: [...] e。使用您的代码,我们可以:

import sqlite3
import string
import nltk

conn = sqlite3.connect('db.sqlite3')
cur=conn.cursor()

cur.execute('SELECT KEYWORDS from CONTENT')
c = cur.fetchall()
print("content keywords are %r" % c)
for result in c:
    d = nltk.word_tokenize(result[0])
    for token in d:
        print("tokens are %s" % token)