본문 바로가기

IT/파이썬 Python

[파이썬] 텍스트 파일 처리시 행 끝의 개행문자(\n) 삭제 - map, lambda, strip

반응형

파이썬으로 (제가) 주로 하는 일 중 하나가 텍스트 파일 처리입니다.

큰 크기 (기가바이트 단위) 의 텍스트 파일을 읽어서 원하는 대로 처리하는데 가장 편한 방법 중 하나가 파이썬을 사용하는 방법인데요,

텍스트 파일을 읽을 때 많이 사용하는 방법 중 하나가 readlines 함수입니다.

다만 readlines함수를 쓰면 각각 행의 마지막에 붙어 있는 개행문자 (\n) 도 같이 딸려서 읽게 됩니다.


텍스트 파일을 처리 할 때 개행문자는 대부분 원치 않는 데이터이므로 삭제를 해야 하는데요, 간단하게 한 줄로 처리가 가능합니다.

(마지막 라인)


f = open(sys.argv[1], 'r') 
lines = f.readlines()
lines = list(map(lambda s: s.strip(), lines))


한 줄이지만 저 같은 초보자들을 위해 사용된 함수를 설명해 보겠습니다.


  • strip  메서드 : 문자열의 앞/뒤에서 특정 문자를 삭제하는 메서드 입니다.
    text.strip(삭제할 문자) 와 같이 사용하는데요, 삭제할 문자를 따로 지정하지 않으면 모든 종류의 blank 문자를 삭제합니다.
    여기서 blank  문자는 스페이스, 탭, 뉴라인(개행문자) 등이 있습니다.
    물론 여기에서는 개행 문자를 삭제하기 위해 사용했지요.

  • 람다 함수 (익명 함수)
    inline으로 간단히 함수를 사용할 때 쓰는 방법이 람다 합수 입니다.
    함수를 인자로 받는 다른 함수를 쓸 때 사용하면 코드가 훨씬 간단해 지는데요, 일반 함수처럼 return문을 따로 지정할 필요가 없이 표현식으로 표시한 계산 결과가 바로 값으로 리턴 됩니다.
    위의 코드에서 사용한 것은 텍스트 스트링을 strip 해서 바로 리턴 해 주는 함수가 람다 함수로 사용 되었습니다.

  • map 함수
    맵 함수는 함수와 반복가능한 자료형(iterable)을 입력으로 받아, 입력 자료형의 각각의 요소가' 함수에 의해 수행된 결과' 를 모두 묶어서 리턴하는 함수입니다.
    간단하게 설명하면, iterable 인 lines (텍스트 파일의 각각의 행) 을 입력으로 하여 strip 람다 함수를 실행하여 나온 결과물 (개행문자 등이 삭제된 텍스트) 을 리턴하게 되는 것이죠.

  • list 함수
    반복 가능한 자료형(iterable) 을 입력 받아 리스트로 리턴하는 함수입니다.
    리스트를 입력 받으면 같은 내용의 리스트로 복사해서 리턴 합니다.
    여기 에서는 map함수의 결과물인 텍스트 리스트 (개행문자가 삭제된 텍스트의 집합)를 복사한 리스트가 리턴 됩니다


도움이 되셨나요? 꼭 각각의  내용을 이해하지는 못하더라도 필요할 때 간단히 복사해서 쓸 수 있는 유용한 팁이었습니다.

잘 기억해 두시면 좋을 것 같습니다.

감사합니다~


반응형