2016-11-21 1 views
-1

특정 단어에 대해 한 줄씩 파일을 검색하고 싶지만이 특정 단어가 앞에오고 그 뒤에 공백이 오게하고 싶습니다.파이썬에서 앞뒤에 공백이있는 파일에서 단어를 검색하려면 어떻게해야합니까?

나는 이것을 정규식을 사용해서해야한다는 것을 알고있다. 나는 this 가이드를 읽고 있었지만 같은 문장에서 lookahead와 lookbehind를 모두 적용하는 방법이 혼란 스럽다.

어떻게하면됩니까?

counter = 0 
out = open('out.txt', 'w') 
with open(original_db, 'r') as db: 
    for line in db: 
     if re.search(word, line, re.IGNORECASE): 
      counter += 1 
      out.write(line) 
print("Entries found for word: " + str(counter)) 
+4

왜 줄을 나누고 단어가 결과 목록에 있는지 확인하십시오. –

+0

에는 샘플 라인이 포함될 수 있습니까? – MYGz

+0

자세한 내용을 입력하십시오. 그렇지 않으면 명확하지 않습니다. 줄의 시작/끝 부분에 "단어"가 일치하지 않는 경우에도 단어를 일치시키려는 것입니까? –

답변

5

당신은 당신의 패턴에 단어 경계 앵커, \b를 추가 할 수

if re.search('\b{}\b'.format(re.escape(word)), line, re.IGNORECASE): 

이 만 일치하는 단어 문자 (AZ, 0-9 또는 _ 문자) 앞에 또는 뒤에 때 다른 단어가 아닌 사람이. 공백보다 더 넓습니다. 구두점 앞에 나오는 단어 나 뒤에 오는 단어도 사용할 수 있습니다.

공백으로 구분 된 단어 만 일치시켜야하는 경우 정규식을 사용하지 마십시오. 그냥 공백으로 나눕니다.

if word in line.lower().split(): 
+0

너무 평소와 같이 좋은, 좋은 대답 :) –

+0

're.search ('\ b {} \ b'.format (re.escape (단어)), 줄, re.IGNORECASE) :' 스플리터가 잘 작동했습니다. 빠른 응답에 감사드립니다. – Aventinus

+0

'word'변수에 단어를 입력하셨습니까? –

관련 문제