[python] 줄 바꿈없이 파일을 읽는 방법?

파이썬에서 호출

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

각 요소가 파일의 한 줄인 목록이됩니다. 그것은 약간 어리석지 만 여전히 readlines()개별 요소에 개행 문자를 씁니다.

어떻게 피할 수 있습니까?



답변

다음을 사용하여 전체 파일과 분할 선을 읽을 수 있습니다 str.splitlines.

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]

또는 더 간단한 대안은 strip줄 바꿈 대신입니다.

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

심지어 읽을 수는 없지만 :

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

의 반환 값이 or부울이 아니라 true 또는 false로 평가 된 객체라는 사실을 악용합니다 .


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()개행을 readlines()유지하기 때문에 개행도 유지합니다.

참고 : 메소드의 대칭성을 readlines()위해 줄 바꿈을 추가 writelines()하지 않으므로 in f2.writelines(f.readlines())의 정확한 사본을 생성합니다 .ff2


답변

temp = open(filename,'r').read().split('\n')


답변

또 다른 예:

한 번에 한 행씩 파일을 읽습니다. 문자열 끝에서 원하지 않는 문자 제거str.rstrip(chars)

with open(filename, 'r') as fileobj:
    for row in fileobj:
        print( row.rstrip('\n') )

또한 참조 str.strip([chars])str.lstrip([chars])

(파이썬> = 2.0)


답변

temp = open(filename,'r').read().splitlines()


답변

이것이 최선의 선택이라고 생각합니다.

temp = [line.strip() for line in file.readlines()]


답변

이 시도:

u=open("url.txt","r")
url=u.read().replace('\n','')
print(url)  


답변

my_file = open("first_file.txt", "r")
for line in my_file.readlines():
    if line[-1:] == "\n":
        print(line[:-1])
    else:
        print(line)
my_file.close()