복붙노트

[PYTHON] 줄 바꿈으로 구분 된 파일을 읽고 줄 바꿈을 삭제하는 가장 좋은 방법은 무엇입니까?

PYTHON

줄 바꿈으로 구분 된 파일을 읽고 줄 바꿈을 삭제하는 가장 좋은 방법은 무엇입니까?

파이썬에서 줄 바꿈 된 파일을 읽을 때 줄 바꿈을 제거하는 가장 좋은 방법을 결정하려고합니다.

필자가 알아 낸 점은 테스트 할 코드를 포함하는 다음 코드입니다.

import os

def getfile(filename,results):
   f = open(filename)
   filecontents = f.readlines()
   for line in filecontents:
     foo = line.strip('\n')
     results.append(foo)
   return results

blahblah = []

getfile('/tmp/foo',blahblah)

for x in blahblah:
    print x

제안?

해결법

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

    1.

    lines = open(filename).read().splitlines()
    
  2. ==============================

    2.여기 당신이 요청한 것을하는 발전기가 있습니다. 이 경우 rstrip을 사용하면 스트립보다 빠르고 약간 빠릅니다.

    여기 당신이 요청한 것을하는 발전기가 있습니다. 이 경우 rstrip을 사용하면 스트립보다 빠르고 약간 빠릅니다.

    lines = (line.rstrip('\n') for line in open(filename))
    

    그러나 이것을 사용하여 후행 공백을 없앨 수 있습니다.

    lines = (line.rstrip() for line in open(filename))
    
  3. ==============================

    3.이 접근법에 대해 어떻게 생각하십니까?

    이 접근법에 대해 어떻게 생각하십니까?

    with open(filename) as data:
        datalines = (line.rstrip('\r\n') for line in data)
        for line in datalines:
            ...do something awesome...
    

    생성자 표현식은 전체 파일을 메모리에로드하지 않고 파일을 닫는 것을 보장합니다.

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

    4.

    for line in file('/tmp/foo'):
        print line.strip('\n')
    
  5. ==============================

    5.그냥 생성기 표현식을 사용하십시오.

    그냥 생성기 표현식을 사용하십시오.

    blahblah = (l.rstrip() for l in open(filename))
    for x in blahblah:
        print x
    

    또한 메모리에있는 전체 파일을 읽는 것에 대해 조언하고 싶습니다. 대형 데이터 세트에서 생성기를 루핑하는 것이 훨씬 효율적입니다.

  6. ==============================

    6.나는 이것을 사용한다.

    나는 이것을 사용한다.

    def cleaned( aFile ):
        for line in aFile:
            yield line.strip()
    

    그런 다음이 일을 할 수 있습니다.

    lines = list( cleaned( open("file","r") ) )
    

    또는 여분의 함수를 사용하여 정리를 확장 할 수 있습니다 (예 : 빈 줄 삭제 또는 주석 줄 건너 뛰기 등).

  7. ==============================

    7.나는 이렇게 할거야.

    나는 이렇게 할거야.

    f = open('test.txt')
    l = [l for l in f.readlines() if l.strip()]
    f.close()
    print l
    
  8. from https://stackoverflow.com/questions/544921/best-method-for-reading-newline-delimited-files-and-discarding-the-newlines by cc-by-sa and MIT license