0

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

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

4 回答 4

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
于 2013-05-03T09:07:26.710 回答
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
于 2013-05-03T09:07:15.100 回答
2

这是你应该做的:

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

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

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

要查看某个项目是否在集合中,您可以执行以下操作:item in my_setTrue 或 False。

于 2013-05-03T09:08:38.373 回答
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]
于 2013-05-03T09:21:26.910 回答