녕녀기의 실험일지

[ Python ] iter와 next를 활용한 텍스트 추출 본문

-- Data --/- Python -

[ Python ] iter와 next를 활용한 텍스트 추출

녕녀기 2023. 9. 8. 14:14

본문으로

안녕하세요. 녀기입니다.

 

평소와 다름 없이 테스트 업무를 보던 어느 날....

 

헤더 파일에 매크로만 900개 이상이었고,

 

이를 정리해야 하는 일이 있었지요😱

 

 

자동화를 해야겠다는 생각이 있었지만,

 

코드는 계속 에러가 나고 고칠 시간은 없었기에,

 

결국 900개를 수동으로 입력했다는 슬픈 전설이 있습니다...

 

( 이 동상에는 슬픈 전설이 있어(?) )

 

 

하지만 그 이후에 작성을 했다는 사실!!!

 

을 기록하기 위해 들어왔습죠.

 

(왔습죠가 뭐냐 왔습죠가)

 

iter와 next 한 번 알아보시죠.


iter와 next

(아래는 참고한 블로그 입니다.)

https://www.flowdas.com/blog/iterators-in-python/index.html

 

파이썬 이터레이터 — flowdas

파이썬 이터레이터 대부분의 파이썬 튜토리얼들과는 달리 파이썬 3.3을 중심으로 기술하고 파이썬 2를 포함한 하위 버전에서 차이를 보이면 따로 설명합니다. 파이썬의 시퀀스는 for 루프로 탐색

www.flowdas.com

https://dojang.io/mod/page/view.php?id=2408 

 

파이썬 코딩 도장: 39.4 iter, next 함수 활용하기

이번에는 파이썬 내장 함수 iter, next에 대해 알아보겠습니다. iter는 객체의 __iter__ 메서드를 호출해주고, next는 객체의 __next__ 메서드를 호출해줍니다. 그럼 range(3)에 iter와 next를 사용해보겠습니

dojang.io


(위에 'play ▶' 버튼을 눌러보세요.)

 

iter는 반복 가능한 객체에서 __iter__ 메서드를 호출해 이터레이터를 반환하고, next객체의 __next__ 메서드를 호출해 이터레이터에서 값을 차례대로 꺼냅니다. 

 

iter를 통해 변환된 리스트에서, next를 사용해 값을 하나 하나 순서대로 출력하는 것을 볼 수가 있습니다.

 

이는 for문으로 해도 대충 구현이 됩니다만,

 

iter와 next는 아래와 같이 사용될 수 있기 때문에 쓸만합니다.

 

차이가 보이시나요 여러분?

 

리스트를 for문으로 돌리면,

 

어떤 조건을 붙이지 않는 이상 차례대로 하나씩 꺼내오는 것이 정석입니다.

 

그러나 for문 아래에 next(testIter)로 인해서, 이터레이터 내부의 순서가 하나씩 이동한 것이죠.

 

 

 

이터레이터에서 0번째 요소로 for문 실행 → 0번째 요소 출력 → next()로 1번째 요소 출력 → 1번째 요소가 아닌 2번째 요소로 for문 실행 → 2번째 요소 출력 → next()로 3번째 요소 출력.....

 

의 과정을 거친 것입니다.

 

(맞게 설명됐는지 모르겠습니다만 정황상 저런 흐름으로 흘러간 것 같습니다.

 

만약 잘못된 내용이 있다면 댓글 달아주세요.)

 

 

 

그렇다면 iter와 next의 특성을 이용해

 

특정 문장이 '\n' 이스케이프 문자로 끝나면, 다음 문장까지 저장하고

 

그 다다음 문장부터 시작할 수 있습니다.

 

아래 코드처럼.

# '\n'로 끝나는 문장이면 다음 라인도 추가합니다.
if line.endswith('\n'):
    try : 
        # next로 iterator의 다음 요소를 불러옵니다.
        next_line = next(lines_iter)
        print(cnt)
        print("--------------")
        statement += next_line
        cnt+=1
    except StopIteration: 
        break

line이 '\n'으로 끝나면, next()를 통해 다음 문장까지 추가하고 있습니다.

 

이러면 두 줄에 나눠서 작성돼 있는 매크로를 저장할 수 있습니다.


아직 자동화 코드가 완성된 것은 아니지만, 저것만으로도 80%로는 완성했다고 할 수 있습니다.

 

(아이 신나~~)

 

그럼 저는 마저 완성해 보도록 할게요~~!!!!!

 

Comments