比较两个文件并在python中找到匹配的单词

时间:2013-05-03 09:02:23

标签: python file search

我有两个文件:第一个包含术语及其频率:

table 2
apple 4
pencil 89

第二个文件是字典:

abroad
apple
bread
...

我想检查第一个文件是否包含第二个文件中的任何单词。例如,第一个文件和第二个文件都包含“apple”。 我是python的新手。 我尝试了一些东西,但它不起作用。你可以帮帮我吗 ?谢谢

for line in dictionary:
    words = line.split()
    print words[0]

for line2 in test:
    words2 = line2.split()
    print words2[0]

4 个答案:

答案 0 :(得分:4)

这样的事情:

with open("file1") as f1,open("file2") as f2:
    words=set(line.strip() for line in f1)   #create a set of words from dictionary file

    #why sets? sets provide an O(1) lookup, so overall complexity is O(N)

    #now loop over each line of other file (word, freq file)
    for line in f2:
        word,freq=line.split()   #fetch word,freq 
        if word in words:        #if word is found in words set then print it
            print word

<强>输出:

apple

答案 1 :(得分:3)

它可以帮到你:

file1 = set(line.strip() for line in open('file1.txt'))

file2 = set(line.strip() for line in open('file2.txt'))

for line in file1 & file2:

    if line:

        print line

答案 2 :(得分:2)

这是你应该做的:

  • 首先,您需要将所有字典单词放在可以轻松查找的地方。如果你不这样做,每次你想检查另一个文件中的一个单词时,你必须阅读整个字典文件。

  • 其次,您需要检查文件中的每个单词是否都是从词典文件中提取的单词。

对于第一部分,您需要使用listset。这两者之间的区别在于list会保留您将项目放入其中的顺序。 set是无序的,因此您首先从字典文件中读取哪个单词并不重要。此外,当您查找某个项目时,set会更快,因为这就是它的用途。

要查看某个项目是否在某个集合中,您可以执行以下操作:item in my_set,无论是True还是False。

答案 3 :(得分:2)

我有try.txt中的第一个双重列表和try_match.txt

中的单个列表
f = open('try.txt', 'r')
f_match = open('try_match.txt', 'r')
print f
dictionary = []
for line in f:
    a, b = line.split()
    dictionary.append(a)

for line in f_match:
    if line.split()[0] in dictionary:
        print line.split()[0]