2013-08-17 5 views
1

나는 텍스트 파일을 읽고 얼마나 많은 줄이 텍스트를 포함하는지에 대한 백분율로 텍스트의 TLA 양을 출력합니다.와 약어 Stop with python

import re 
total_lines = 0 
matched_lines = 0 
for line in open("sentences.txt"): 
    total_lines += 1 
    matched_lines += bool(re.search(r"\b[A-Z]{3}\b", line)) 
    matched_lines += bool(re.search(r"\b[A-Z]\\.[A-Z]\\.[A-Z]\b", line)) # DOES NOT WORK 
print('{}% of sentences contain a TLA'.format(round(float(matched_lines)/total_lines * 100, 1))) 

내가하려고하는 것은 TLA가 그들 사이에서 완전히 멈춘 상태입니다. 지금처럼 WWW를 계산하지만 W.W.W를 계산하기를 원합니다.

+0

이 코드를 제공 한 이전 질문에 대한 대답을 수락하는 것을 잊지 마십시오. :) – TerryA

답변

2

\.이 아닌 \\.이어야합니다.

파이썬에서 문자열 외부에 rraw string literal이됩니다. 원시 문자열 리터럴의 이점은 백 슬래시 (\)가 특수한 것이 아니기 때문에 re에 전달하는 것이 더 쉽다는 것을 의미합니다.

두 줄 모두에서 원시 문자열 리터럴 (good!)을 사용하고 있으므로 \b은 단어 경계를 지정하고 있습니다. 그러나 \\.\과 그 뒤에 오는 문자를 찾습니다. 원하는 것은 \.이며 문자는 .입니다.