키워드 파일의 모든 키워드와 일치하는 infile 행을 찾는 코드를 작성했습니다. 문제는 모든 키워드가 포함 된 infile의 줄만 가져오고 싶습니다. 내가 생각했던 것보다 열심히 보인다. 그러나 나는 초심자 다. 그래서 나는 명백한 무엇인가를 놓치고 있다고 생각한다. Regex는 '연산자'가 간단하지는 않습니다.Python에서 AND 연산자로 일치하는 행
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
regexes에 'and'가 없기 때문에 정규 표현식이 없습니다. 그들은 패턴 (언어)을 설명하는 데 사용되며, 가장 중요한 것은 흐름이 있습니다 (예 : _ "이제 Foo 또는 Bar 중 하나를 읽을 수 있음"_ 의미 있음, _) 이제 Foo ** 및 ** Bar를 읽습니다. 같은 시간 "_하지 않습니다). –
정규 표현식으로 지정된 패턴은 특정 순서를 정의합니다. 그들은 상태 기계를 기술하는 간결한 방법입니다. '| ' "또는"는 특정 위치에 두 가지 옵션을 지정하거나, 머신이 통과 할 수있는 두 가지 상태 (또는 상태 시퀀스)를 지정할 수있게합니다. 두 옵션은 같은 위치에있을 수 없으며 컴퓨터가 동시에 두 가지 상태가 될 수 없으므로 "and"기능은별로 유용하지 않습니다. – jpmc26