从文件中提取单词

时间:2011-02-10 22:32:04

标签: python

我使用python打开一个文件,以查找打开的文件中是否存在预定义的单词集。我在列表中选择了预定义的单词集,并打开了必须测试的文件。现在是否有任何方法可以在python而不是行中提取单词。多数民众赞成使我的工作更容易。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你可以做一些事情

  • 调用file.readlines()并在文字不大的情况下将整个文本拆分为所需的分隔符
  • 调用read()并一次执行字节

查看文件的pydocs - http://docs.python.org/release/2.5.2/lib/bltin-file-objects.html

答案 2 :(得分:1)

此代码将显示文件中存在哪些单词,因为单词完全匹配,并且不在标点符号或其他字符之前或后面,并且具有相同的大小写。通过一些微小的调整,可以使代码更加宽容。

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