2011-10-08 58 views
1

我有一個數字集,其中包含2375013唯一的數字在txt文件中。數據結構是這樣的:如何將特定號碼有效匹配到號碼集?

11009 
900221 
2 
3 
4930568 
293 
102 

我想從另一個數據線用於提取我需要什麼數據集數相匹配的數字。所以,我這樣編碼:

6 def get_US_users_IDs(filepath, mode): 
    7  IDs = [] 
    8  with open(filepath, mode) as f: 
    9   for line in f: 
    10    sp = line.strip() 
    11    for id in sp: 
    12     IDs.append(id.lower()) 
    13   return IDs 


    75   IDs = "|".join(get_US_users_IDs('/nas/USAuserlist.txt', 'r')) 
    76   matcher = re.compile(IDs) 
    77   if matcher.match(user_id): 
    78    number_of_US_user += 1 
    79    text = tweet.split('\t')[3] 

但它需要大量的時間來運行。有沒有想法減少運行時間?

+0

更改存儲數字的方式。把它們放在一個sqlite數據庫中併爲它們編制索引。然後使用SQL進行查詢。 –

+0

確實,如果您的數據不適合內存,sqlite可能是一個很好的解決方案。這不是這種情況(200萬整數少於20 Mb)。 – log0

回答

1

我的理解是,你在一個文件中有大量的id,並且你想知道這個文件中是否有特定的user_id。

您可以使用python集。

fd = open(filepath, mode); 
IDs = set(int(id) for id in fd) 
... 
if user_id in IDs: 
    number_of_US_user += 1 
    ... 
+0

在這種情況下是否需要使用「set」?已經設置的號碼只有唯一的號碼。我只是嘗試了你的建議,但也需要很多次。嗯.....。 – ooozooo

+0

@ Ugo我犯了一個錯誤。有效!非常感謝! – ooozooo

+0

@MINSUPARK:如果你解決了你的問題,你應該點擊左邊的複選標記來接受這個答案。 –