> 백엔드 개발 > 파이썬 튜토리얼 > 텍스트 파일에서 Python 문자열 검색이 항상 True를 반환하는 이유는 무엇입니까?

텍스트 파일에서 Python 문자열 검색이 항상 True를 반환하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-22 02:14:21
원래의
882명이 탐색했습니다.

Why Does My Python String Search in a Text File Always Return True?

텍스트 파일에서 문자열 검색

문제:
텍스트 파일 내에 특정 문자열이 있는지 확인하려는 시도 특정 함수를 사용하는 텍스트 파일은 문자열에 관계없이 항상 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿