我有兩個文件具有以下行數:查找文件之間常用短語與百萬行
file1 - 110433003
file2 - 4838810
我需要找到它們之間常用短語。每行的格式如下:
p1 ||| p2 ||| .......
file1的p1可以是file2中的p2。不幸的是,我寫的代碼花了太長時間才能做到這一點。
import sys
import os
if(len(sys.argv)<2):
print 'python CommonPhrases.py enFr hrEn commonFile'
sys.exit()
enFr = open(sys.argv[1],'r')
hrEn = open(sys.argv[2],'r')
common = open(sys.argv[3],'w')
sethrEn = set([])
setenFr= set([])
for line in hrEn:
englishPhrase = line.split(' ||| ')[1]
sethrEn.add(englishPhrase)
for line in enFr:
englishPhrase = line.split(' ||| ')[0]
if(englishPhrase in sethrEn):
common.write(englishPhrase+'\n')
有沒有更快的方法來做到這一點?
謝謝
python是否有一個trie實現? – James
它似乎有一個http://packages.python.org/PyTrie/ – crazyaboutliv
如果你在一個像unix系統,並且如果每個文件只包含一個短語,那麼你可以試試這個。將每個短語放入它自己的行中,然後按|排序uniq -c。另見http://www.stanford.edu/class/cs124/kwc-unix-for-poets.pdf – Himanshu