본문 바로가기
파이썬

파이썬 줄 바꿈없이 파일을 읽는 방법?

by º기록 2021. 2. 7.
반응형

Python에서

temp = open(filename,'r').readlines()

각 요소가 파일의 한 줄인 목록이 생성됩니다. 약간 어리석지 만 여전히 : readlines () 는 각 요소에 개행 문자를 씁니다. 제가 원하지 않는 일입니다.

어떻게 피할 수 있습니까?

 

해결 방법

 


temp = file.read().splitlines()

또는 손으로 줄 바꿈을 제거 할 수 있습니다.

temp = [line[:-1] for line in file]

참고 : 이 마지막 솔루션은 파일이 줄 바꿈으로 끝나는 경우에만 작동하며 그렇지 않으면 마지막 줄에서 문자가 손실됩니다.

이 가정은 대부분의 경우에 해당됩니다 (특히 텍스트 편집기로 생성 된 파일의 경우, 어쨌든 종료 줄 바꿈을 추가하는 경우가 있습니다 ).

이것을 피하려면 파일 끝에 개행을 추가 할 수 있습니다.

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

또는 더 간단한 대안은 개행을 대신 스트립 하는 것입니다.

[line.rstrip('\n') for line in file]

또는 읽기는 어렵지만 :

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

or 의 반환 값이 부울이 아니라 참 또는 거짓으로 평가 된 객체라는 사실을 이용합니다.

readlines 메소드는 실제로 다음과 같습니다.

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

readline () 은 개행을 유지하므로 readline () 도 개행을 유지합니다.


 

참조 페이지 https://stackoverflow.com/questions/12330522

 

 

반응형

댓글