如何访问从数据库中获取的列表元素并对它们执行 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 编程新手,谁能帮我解决这个问题?
c
(cur.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)
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 编程新手,谁能帮我解决这个问题?
c
(cur.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)