텍스트 파일에서 문자열 검색
문제:
텍스트 파일 내에 특정 문자열이 있는지 확인하려는 시도 특정 함수를 사용하는 텍스트 파일은 문자열에 관계없이 항상 True를 반환합니다.
코드:
def check(): datafile = file('example.txt') found = False for line in datafile: if blabla in line: found = True break
진단 및 해결 방법:
제공된 코드는 텍스트 파일을 검색하고 한 줄씩 확인하여 특정 문자열 "blabla"가 있는지 확인합니다. 그러나 문제는 블라블라가 라인에 있을 경우의 조건이다. Python에서는 멤버십을 확인합니다. 즉, 문자열이 줄의 아무 곳에나 있으면 True를 반환합니다.
이 문제를 완화하려면 다양한 접근 방식을 고려할 수 있습니다.
옵션 1: 파일 콘텐츠에서 직접 문자열 검색
with open('example.txt') as f: if 'blabla' in f.read(): print("true")
이 접근 방식은 전체 파일 콘텐츠를 문자열로 읽어온 다음 다음을 확인합니다. 문자열의 존재. 파일이 너무 크지 않은 경우 각 줄을 반복하는 것보다 이 방법이 더 빠르고 편리한 경우가 많습니다.
옵션 2: 효율적인 파일 액세스를 위해 메모리 매핑 사용
import mmap with open('example.txt') as f: s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if s.find('blabla') != -1: print('true')
이 접근 방식은 Python의 메모리 매핑 기술을 활용하여 기본 파일을 직접 조작하는 "문자열 같은" 개체를 생성하여 파일을 완전히 로드하지 않고도 효율적인 액세스를 허용합니다.
옵션 3: 정규식을 사용한 대소문자 구분 없는 검색
if re.search(br'(?i)blabla', s): print('true')
이 접근 방식은 정규식을 사용하여 메모리 내에서 대소문자를 구분하지 않고 검색을 수행합니다. 매핑된 파일. (?i)blabla 구문을 사용하면 검색에서 대소문자 차이를 무시하게 됩니다.
위 내용은 텍스트 파일에서 Python 문자열 검색이 항상 True를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!