>백엔드 개발 >파이썬 튜토리얼 >Python의 대용량 텍스트 파일에서 문자열의 존재를 효율적으로 확인하려면 어떻게 해야 합니까?

Python의 대용량 텍스트 파일에서 문자열의 존재를 효율적으로 확인하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-12-12 12:45:11892검색

How Can I Efficiently Check for a String's Presence in Large Text Files in Python?

텍스트 파일의 문자열 포함 검사

텍스트 파일 내에 특정 문자열이 있는지 확인하려는 시나리오를 생각해 보세요. 식별되면 특정 작업(X)이 실행되어야 합니다. 그렇지 않으면 대체 작업(Y)이 뒤따라야 합니다. 그러나 이 목표를 달성하기 위한 코드 조각은 지속적으로 True를 반환하여 그 정확성에 대해 의아해합니다.

이러한 잘못된 동작의 원인은 if 문 내에 조건 확인이 없기 때문입니다. 적절한 구현은 다음과 같아야 합니다.

if 'blabla' in line:

그러나 텍스트 파일이 상대적으로 큰 경우 전체 파일을 문자열로 읽어서 이를 사용하여 검색을 수행하는 것이 더 효율적일 수 있습니다. 예는 다음과 같습니다.

with open('example.txt') as f:
    if 'blabla' in f.read():
        print("true")

더 큰 파일의 경우 mmap.mmap()을 활용하여 전체 내용을 메모리에 로드하는 대신 기본 파일을 사용하는 "문자열 같은" 객체를 생성할 수 있습니다.

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에서는 mmap이 bytearray 객체와 유사하므로 검색 문자열을 바이트로 수정해야 한다는 점에 주목할 가치가 있습니다. object:

import mmap

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if s.find(b'blabla') != -1:
        print('true')

게다가 대소문자를 구분하지 않는 일치와 같은 고급 검색 기능을 위해 mmap에서 정규식을 활용할 수 있습니다.

import mmap
import re

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if re.search(br'(?i)blabla', s):
        print('true')

위 내용은 Python의 대용량 텍스트 파일에서 문자열의 존재를 효율적으로 확인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.