如何根据列表值对查询中的元组列表进行排序?
How to sort lists of tuples from a query according to the lists value?
我找不到关于如何从查询中对元组进行排序的明确示例。这是我的全部代码:
import nltk //http://www.nltk.org/
import pypyodbc
text = raw_input()
token = nltk.word_tokenize(text)
print(token)
tagged = nltk.pos_tag(token)
print(tagged)
class Database(object):
def __init__(self):
self.connected = False
self.conn = None
self.cur = None
def connect(self):
if not self.connected:
self.conn = pypyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=Dictionary')
self.connected = True
self.cur = self.conn.cursor()
def search(self, lists):
if not self.connected:
self.connect()
for word in lists:
self.cur.execute('SELECT Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
result = self.cur.fetchall()
return result
get = Database()
this = get.search(token)
print(this)
这段代码的输出是:(例如,我输入这句话:we all there
)(我使用SQL服务器创建了数据库。Table名称:Words
, 列: English, Ybanag, POST
) 并在列中显示它们的相应值。)
['we', 'all', 'there'] //tokenize sentence
[('we', 'PRP'), ('all', 'DT'), ('there', 'RB')] //tokens and their POST(Part-Of-Speech Tag)
[('tore',), ('ngaming',), ('sittam',)] //their corresponding value in Ybanag from the dictionary
其中tore
是there
,ngaming
是all
,sittam
是we
,可以看到第3行顺序不是 ['we', 'all', 'there']
。我的意思是,从查询中,如何根据第一行 ['we', 'all', 'there']
的列表顺序对输出进行排序?我还想消除输出最后一行中的符号 [('',),]
。该程序倾向于将输入的句子翻译成另一种语言,例如 Ybanag
,菲律宾的一种母语。
您还需要 select SQL 中的英语单词,以便您的第 3 行是 (english,ybanag) 元组的列表。这样您就可以将其转换为字典并遍历输入列表中的每个单词,按顺序检索 Ybanag 等价物:
self.cur.execute('SELECT English,Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
resultDict=dict(self.cur.fetchall())
outList=[]
for word in lists:
outList.append(resultDict[word])
这不能解决数据库中找不到单词的问题,如果您尝试转换包含许多单词的长句,它也不能很好地扩展。
我找不到关于如何从查询中对元组进行排序的明确示例。这是我的全部代码:
import nltk //http://www.nltk.org/
import pypyodbc
text = raw_input()
token = nltk.word_tokenize(text)
print(token)
tagged = nltk.pos_tag(token)
print(tagged)
class Database(object):
def __init__(self):
self.connected = False
self.conn = None
self.cur = None
def connect(self):
if not self.connected:
self.conn = pypyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=Dictionary')
self.connected = True
self.cur = self.conn.cursor()
def search(self, lists):
if not self.connected:
self.connect()
for word in lists:
self.cur.execute('SELECT Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
result = self.cur.fetchall()
return result
get = Database()
this = get.search(token)
print(this)
这段代码的输出是:(例如,我输入这句话:we all there
)(我使用SQL服务器创建了数据库。Table名称:Words
, 列: English, Ybanag, POST
) 并在列中显示它们的相应值。)
['we', 'all', 'there'] //tokenize sentence
[('we', 'PRP'), ('all', 'DT'), ('there', 'RB')] //tokens and their POST(Part-Of-Speech Tag)
[('tore',), ('ngaming',), ('sittam',)] //their corresponding value in Ybanag from the dictionary
其中tore
是there
,ngaming
是all
,sittam
是we
,可以看到第3行顺序不是 ['we', 'all', 'there']
。我的意思是,从查询中,如何根据第一行 ['we', 'all', 'there']
的列表顺序对输出进行排序?我还想消除输出最后一行中的符号 [('',),]
。该程序倾向于将输入的句子翻译成另一种语言,例如 Ybanag
,菲律宾的一种母语。
您还需要 select SQL 中的英语单词,以便您的第 3 行是 (english,ybanag) 元组的列表。这样您就可以将其转换为字典并遍历输入列表中的每个单词,按顺序检索 Ybanag 等价物:
self.cur.execute('SELECT English,Ybanag FROM Words WHERE English IN (%s)' % (",".join('?'*len(lists))), lists)
resultDict=dict(self.cur.fetchall())
outList=[]
for word in lists:
outList.append(resultDict[word])
这不能解决数据库中找不到单词的问题,如果您尝试转换包含许多单词的长句,它也不能很好地扩展。