복붙노트

[PYTHON] 큰 텍스트 파일에서 두 개의 고유 한 단어 사이에서 정보를 추출하는 방법

PYTHON

큰 텍스트 파일에서 두 개의 고유 한 단어 사이에서 정보를 추출하는 방법

문자 정보로 가득 찬 약 150 개의 텍스트 파일이 있습니다. 각 파일에는 두 개의 고유 한 단어 ()와 bravo가 포함되어 있으며이 고유 한 단어 사이에서 텍스트를 추출하여 다른 파일에 쓰려고합니다.

수동으로 두 단어에 대해 Ctrl + F를 누르고 텍스트를 복사 할 수 있습니다. 많은 파일에 대해 프로그램 (선호하는 Python)을 사용하여이 작업을 수행하는 방법을 알고 싶습니다.

해결법

  1. ==============================

    1.정규 표현식을 사용할 수 있습니다.

    정규 표현식을 사용할 수 있습니다.

    >>> st = "alpha here is my text bravo"
    >>> import re
    >>> re.findall(r'alpha(.*?)bravo',st)
    [' here is my text ']
    

    내 test.txt 파일

    alpha here is my line
    yipee
    bravo
    

    이제 open을 사용하여 파일을 읽거나 정규식을 적용합니다.

    >>> f = open('test.txt','r')
    >>> data = f.read()
    >>> x = re.findall(r'alpha(.*?)bravo',data,re.DOTALL)
    >>> x
    [' here is my line\nyipee\n']
    >>> "".join(x).replace('\n',' ')
    ' here is my line yipee '
    >>>
    
  2. ==============================

    2.

    a = 'alpha'
    b = 'bravo'
    text = 'from alpha all the way to bravo and beyond.'
    
    text.split(a)[-1].split(b)[0]
    # ' all the way to '
    
  3. ==============================

    3.str.find와 형제 인 rfind에는 시작과 끝 arg가 있습니다.

    str.find와 형제 인 rfind에는 시작과 끝 arg가 있습니다.

    alpha = 'qawsed'
    bravo = 'azsxdc'
    startpos = text.find(alpha) + len(alpha)
    endpos = text.find(bravo, startpos)
    do_something_with(text[startpos:endpos]
    

    포함 된 텍스트가 짧고 앞쪽에있는 경우 가장 빠른 방법입니다.

    포함 된 텍스트가 비교적 큰 경우 다음을 사용하십시오.

    startpos = text.find(alpha) + len(alpha)
    endpos = text.rfind(bravo)
    

    포함 된 텍스트가 짧고 끝에 가까울 경우 다음을 사용하십시오.

    endpos = text.rfind(bravo)
    startpos = text.rfind(alpha, 0, endpos - len(alpha)) + len(alpha)
    

    첫 번째 방법은 텍스트 시작 부분에서 두 번째 검색을 시작하는 순진한 방법보다 나은 경우가 있습니다. 포함 된 텍스트에 지배적 인 패턴이없는 경우 사용하십시오.

  4. ==============================

    4.정규 표현식을 사용하는 대신 Python string.find 메소드를 사용하십시오.

    정규 표현식을 사용하는 대신 Python string.find 메소드를 사용하십시오.

    >>>> unique_word_a = 'alpha'
    >>>> unique_word_b = 'bravo'
    >>>> s = 'blah blah alpha i am a good boy bravo blah blah'
    >>>> your_string = s[s.find(unique_word_a)+len(unique_word_a):s.find(unique_word_b)].strip()
    i am a good boy
    
  5. from https://stackoverflow.com/questions/9222106/how-to-extract-information-between-two-unique-words-in-a-large-text-file by cc-by-sa and MIT license