Чтобы подражать точному шаблону в вашей команде grep
, выполните
import re
pattern = re.compile('|'.join(key_words))
for log_line in log_lines:
if pattern.search(log_line):
print log_line
Если вы хотите разрешить спецсимволы, вам придется их избегать:
pattern = re.compile('|'.join(re.escape(word) for word in key_words))
Как вы можете себе представить, использование регулярных выражений в этом случае немного излишне. Вместо этого вы можете сделать прямой поиск. Вы можете использовать any
, чтобы помочь с поиском, так как он закорачивает.
for log_line in log_lines:
if any(word in log_line for word in key_words):
print log_line
Выполняет линейный поиск по всей строке для каждого ключевого слова. Вы можете сделать это немного более эффективным, если ключевые слова предназначены для фактических слов, тем более что у вас уже есть набор для ключевых слов:
for log_line in log_lines:
if keywords.intersection(set(log_line.split()):
print log_line