2014-03-07 63 views
0

我很好奇,如何搜索(txt)文件中包含約。一百萬條記錄。 (我使用Python) 你會怎麼做?將每個記錄加載到數組或其他結構?根據記憶我認爲這太無效了(但我不是專家)。或者我應該對這個文件做一些索引?你怎麼看?包含約1 000 000個記錄的文件中的有效搜索?

+2

請詳細說明。你在尋找什麼?你在尋找多少東西?什麼是數據格式?你是否將整個工作作爲一個大批量來完成,還是需要處理查詢? – user2357112

+0

@ user2357112就我而言,它是一個txt文件中的雙語字典。我想每次使用字典時都要搜索一個單詞翻譯。但它也必須作爲一個Web應用程序工作。所以我認爲,每次搜索某個單詞時加載整個文檔都是無效的。 –

回答

1

我的建議是將數據加載到數據庫(如mysql),索引適當的列,然後用它來搜索數據。

雖然你可以將它全部加載到Python的內存中,但這絕不是搜索數據的最佳方式。使用索引,這將需要從你的很多繁重的工作,並應提供相當快的搜索時間(只要你有像樣的索引列)

如果你只是要查找記錄基於整個值來自單個列(即沒有通配符搜索或匹配),那麼您可以簡單地使用Python將值加載到內存中。我使用這種方法將超過3000萬條交易記錄加載到內存中,並根據交易ID進行搜索。這對我來說是一個更好的解決方案,因爲這個龐大的數據集只在一個很少運行的任務中使用過一次,我只需要引用單個列的整個值。

下面是我如何實現這一目的的快速示例。

transactions = {} 
with open("transactions") as f: 
    for line in f: 
     try: 
      lineSplit=line.split(",") 
      transactions[lineSplit[0]] = lineSplit[1] 
     except: 
      pass 
if "transid" in transactions: 
    print transactions["transid"] 
相關問題