Я написал код, приведенный ниже, чтобы найти строки в infile, которые соответствуют любому из ключевых слов в файле ключевого слова. Проблема в том, что я хочу получить только те строки infile, которые содержат ВСЕ ключевые слова. Кажется сложнее, чем я думал, но я новичок, поэтому, я думаю, я просто пропустил что-то очевидное. Однако у Regex нет прямого оператора «и».Соответствующие строки с оператором AND в Python
import re
infile = open('path/#input.txt', 'r')
outfile = open('path/#output.txt', 'w')
# Read a textfile containing keywords to find
# (and strip the newline character '\n')
keywords = [line.strip() for line in open('path/#keywords.txt')]
# Compile keywords into a regex pattern
pattern = re.compile('|'.join(keywords))
# See which lines in the infile match any of the keywords
# and write those lines to the outfile
for line in infile:
if pattern.search(line):
outfile.write(line)
Почему вы решили использовать регулярные выражения для этой задачи? – kindall
Существует не '' и 'регулярных выражений, потому что для регулярных выражений не имеет смысла. Они используются для описания паттернов (языков) и, самое главное, у них есть поток (т. Е. _ «Теперь вы можете прочитать Foo или Bar» _ имеет смысл, _ «теперь вы будете читать Foo ** и ** Bar, в то же время "_ не делает". –
Шаблоны, заданные регулярными выражениями, определяют конкретный порядок; они представляют собой компактный способ описания конечной машины. '' '' Или "позволяет указать два параметра в определенном месте или два возможных состояния (или последовательности состояний), через которые машина может пройти. Поскольку два параметра не могут находиться в одном и том же месте, и машина не может находиться в двух состояниях одновременно, функция «и» не очень полезна. – jpmc26