Что-то вроде этого без регулярного выражения?
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),