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

How to access list elements obtained from the database and perform nltk methods on them?

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 代码在行 d = nltk.word_tokenize(c[i]) 中给出了 TypeError: expected string or buffer error。我是 python 编程新手,谁能帮我解决这个问题?

ccur.fetchall() 的结果)的每个值 c[i] 都是单元素 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)