我有两个文件:第一个包含术语及其频率:
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]
答案 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)
这是你应该做的:
首先,您需要将所有字典单词放在可以轻松查找的地方。如果你不这样做,每次你想检查另一个文件中的一个单词时,你必须阅读整个字典文件。
其次,您需要检查文件中的每个单词是否都是从词典文件中提取的单词。
对于第一部分,您需要使用list
或set
。这两者之间的区别在于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]