파이썬에서 줄 바꿈으로 구분 된 파일을 읽을 때 줄 바꿈 제거를 처리하는 가장 좋은 방법을 결정하려고합니다.
내가 생각 해낸 것은 테스트 할 일회용 코드를 포함하는 다음 코드입니다.
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
제안?
답변
lines = open(filename).read().splitlines()
답변
요청한 것을 수행하는 생성기가 있습니다. 이 경우 rstrip을 사용하는 것이 충분하고 strip보다 약간 빠릅니다.
lines = (line.rstrip('\n') for line in open(filename))
그러나 후행 공백도 제거하기 위해 이것을 사용하고 싶을 것입니다.
lines = (line.rstrip() for line in open(filename))
답변
이 접근 방식에 대해 어떻게 생각하십니까?
with open(filename) as data:
datalines = (line.rstrip('\r\n') for line in data)
for line in datalines:
...do something awesome...
생성기 표현식은 전체 파일을 메모리로로드하지 with
않고 파일을 닫습니다.
답변
for line in file('/tmp/foo'):
print line.strip('\n')
답변
생성기 표현식을 사용하십시오.
blahblah = (l.rstrip() for l in open(filename))
for x in blahblah:
print x
또한 메모리에서 전체 파일을 읽지 않도록 조언하고 싶습니다. 생성기를 반복하는 것이 큰 데이터 세트에서 훨씬 더 효율적입니다.
답변
나는 이것을 사용한다
def cleaned( aFile ):
for line in aFile:
yield line.strip()
그러면 이렇게 할 수 있습니다.
lines = list( cleaned( open("file","r") ) )
또는 추가 기능으로 clean을 확장하여 빈 줄을 삭제하거나 주석 줄을 건너 뛸 수 있습니다.
답변
다음과 같이 할 것입니다.
f = open('test.txt')
l = [l for l in f.readlines() if l.strip()]
f.close()
print l