2016-06-07 126 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

謝謝!我正在尋找這個。 –

相關問題