我有一个文件,它是一个短语列表,每行一个短语。 另一个文件没有以任何方式划分,它只是一个巨大的文本文本文件。我想在第二个文件中搜索短语,如果找到它们,则打印短语。这是我到目前为止的代码。
f = open("phrase.txt", "r")
g = open("text.txt", "r")
for line in f:
search=line.lower()
for word in g:
if search in word:
print(search)
但这并不是为我打印任何东西。
编辑:我将代码更改为:
f = open('phrase.txt').readlines()
f = [f.strip('\n').lower() for f in f]
g = open('text.txt').read()
for phrase in f:
if phrase in g:
print (phrase)
现在我得到匹配的短语。但是有些短语有破折号( - )和后面的更多字母,即使短划线前的短语出现在text.txt中,它们也不会被程序拾取。有什么方法可以改变这个吗?
答案 0 :(得分:1)
如果你想搜索文件中的每个短语,你必须嵌套循环,目前,你只是在搜索最后一个短语
phrases = open("phrase.txt").readLines()
for phrase in phrases:
search= phrase.lower()
words = open("text.txt", "r")
for word in words:
if search in word:
print(search)
words.close()
然而,现在情况开始看起来很有趣,因为你问的是一个单词是否在单词中,这似乎不对。所以
phrases = open("phrase.txt").readLines()
words = open("text.txt").read()
for phrase in phrases:
all_words_found = True
phrase_words = phrase.lower().split(" ")
for word in phrase_words:
if word not in words:
all_words_found = False
break
if all_words_found:
print phrase
这就是你想要的我相信
答案 1 :(得分:0)
f = open('phrase.txt').readlines()
f = [f.strip('\n').lower() for f in f]
g = open('text.txt').read()
words = g.split()
for phrase in f:
search_words = phrase.split()
for word in search_words:
if word in words:
print phrase