Как я могу превратить список слов в текстовом файле в регулярное выражение для фильтрации? - PullRequest
0 голосов
/ 29 августа 2010

Я пытаюсь отфильтровать некоторый текст для определенных ключевых слов, найденных в текстовом файле. Я думал о том, чтобы просто разбирать файл строку за строкой, брать каждое слово и затем объединять их вместе с каналом "|" затем используя эту строку внутри re.sub.

Приветствуются любые более эффективные идеи.

Ответы [ 2 ]

0 голосов
/ 30 августа 2010

Что-то вроде этого без регулярного выражения?

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),
0 голосов
/ 30 августа 2010

Что-то вроде следующего?

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...