2016-06-07 168 views
0

我有一个for循环,用于从SQLite3数据库中检索一页文本的bigram数据。将for循环的输出存储到单个变量中

def bigram_db(): 
cursr.execute("SELECT * FROM trainedGrammar") 
data = cursr.fetchall() 
for data in data: 
    element = data 
    txt = element[0] #fetch first element of list 
    txt += txt 
return txt 

我尝试使用TXT + = TXT但这只是给了我一个段落值得两字数据,当我试图打印功能外bigram_db缓存()。那么如何存储将要由for循环输出的所有bigram数据,可以在for循环之外访问,然后当我打印它时,我希望数据库的整个bigram数据是可用。

+0

什么[数据结构(https://docs.python.org/3/tutorial/ datastructures.html)你想要吗? –

+0

我想要一个字符串。 –

+0

@ CL。但问题是它只给了我一段数据,实际上是4.但是当我在for循环中键入“print txt”时,它给了我所有4段我想做的但是在外面for循环 –

回答

2

你不需要执行fetchall(),你可以直接在游标上迭代。你不能使用相同的变量txt出于两个目的;在循环中,行txt = element[0]覆盖其旧值。

你的功能应该是这样的:

def bigram_db(): 
    cursr.execute("SELECT * FROM trainedGrammar") 
    txt = "" 
    for row in cursr: 
     txt += row[0] 
    return txt 

或不使用for循环:

def bigram_db(): 
    cursr.execute("SELECT * FROM trainedGrammar") 
    return "".join([row[0] for row in cursr]) 
+0

谢谢!我正在寻找这个。 –