从文件中提取单词

4 投票
3 回答
9960 浏览
提问于 2025-04-16 11:36

我用Python打开一个文件,想看看里面是否有一些预先定义好的单词。我把这些单词放在一个列表里,然后打开需要检查的文件。现在我想知道有没有什么方法可以直接提取文件中的单词,而不是逐行读取。这样会让我工作轻松很多。

3 个回答

1

这段代码会显示文件中有哪些单词,前提是这些单词必须完全匹配,而且前后不能有标点符号或其他字符,并且大小写也要一致。如果稍微调整一下代码,它可以变得更宽容一些。

words = set(['hello', 'world', 'testing'])
f     = open('testfile.txt', 'rb')
data  = set(f.read().split())
print words.intersection(data)
1

你可以做几件事情:

  • 如果你的文本不大,可以使用file.readlines()方法,把整个文本按你想要的分隔符分开。
  • 也可以使用read()方法,一次读取一部分内容。

可以查看文件的官方文档 - http://docs.python.org/release/2.5.2/lib/bltin-file-objects.html

7
import re

def get_words_from_string(s):
    return set(re.findall(re.compile('\w+'), s.lower()))

def get_words_from_file(fname):
    with open(fname, 'rb') as inf:
        return get_words_from_string(inf.read())

def all_words(needle, haystack):
    return set(needle).issubset(set(haystack))

def any_words(needle, haystack):
    return set(needle).intersection(set(haystack))

search_words = get_words_from_string("This is my test")
find_in = get_words_from_string("If this were my test, I is passing")

print any_words(search_words, find_in)

print all_words(search_words, find_in)
set(['this', 'test', 'is', 'my'])
True

返回值

撰写回答