如何将文本文件中的单词列表转换为正则表达式以过滤掉?

时间:2010-08-29 17:44:20

标签: python regex

我正在尝试为文本文件中找到的某些关键字过滤掉一些文字。我正在考虑只是逐行解析文件,取出每个单词然后用管道将它们合并在一起“|”然后在re.sub。

中使用该字符串

欢迎任何更有效的想法。

2 个答案:

答案 0 :(得分:0)

如下所示?

import re

with file('keywords.txt', 'r') as k:
    kwords = sorted(k.read().strip().split(), lambda x: (len(x), x))
searchstring = r'\s?\b(' + '|'.join(kwords) + r')\b'
with file('textfile.txt', 'r') as t:
    text = t.read()
newtext, _ = re.subn(searchstring, '', text).lstrip()

答案 1 :(得分:0)

没有regexp这样的东西?

import string
keyset = set(open('keywords.txt').read().splitlines())
for lineno,line in  enumerate(open('textfile.txt')):
    result = [kw
              for kw in keyset
              for w in line.split()
              if kw in w and w.strip(string.punctuation) == kw]
    if result:
        print "%5s (%s): %s" % (lineno,', '.join(result), line),