2013-11-04 1 views
4

나는 file.readlines()을 읽고 전체 파일을 한 줄씩 읽고 목록에 저장한다. 내가 그렇게 같은 파일이있는 경우 -file.readlines() 공백 라인을 남기다

Sentence 1 
Sentence 2 
Sentence 3 

을 나는과 같이 각 문장을 인쇄 할 .readlines()를 사용 -

file = open("test.txt") 
for i in file.readlines(): 
    print i 
    enter code here 

출력은 내 질문은

Sentence 1 

Sentence 2 

Sentence 3 

왜 내가 할 각 문장 사이에 여분의 줄을 얻고 어떻게 제거 할 수 있습니까? 이 질문이 매우 어리 석다면 실례지만 파이썬에서는별로 경험이 없습니다.

UPDATE가

내가 i.strip()를 사용하여도 별도의 라인을 제거하는 것을 발견, 왜 이런 일이 무엇입니까? 내가 아는 한, .split()은 문자열의 끝과 시작 부분에있는 공백을 제거합니다.

답변

7

file.readlines() 문자열 목록 반환. 각 문자열에는 후미 줄 바꿈이 있습니다. print 문은 전달 된 매개 변수를 newlnie와 함께 인쇄합니다. 그것이 여분의 전화가있는 이유입니다. 당신이 한 번에 모든 행을 필요로하지 않는 file.readlines를 사용하지 않는,

print i.rstrip('\n') 

또는 BTW sys.stdout.write

sys.stdout.write(i) 

를 사용

는 여분의 줄 바꿈을 제거 str.rstrip을 사용합니다. 파일을 반복하십시오. 줄 바꿈을 후행

with open("test.txt") as f: 
    for i in f: 
     print i.rstrip('\n') 
     ... 

UPDATE 파이썬 3에서

방지하기 print 인쇄, 당신은 print(i, end='')를 사용할 수 있습니다. 당신이 경우에

파이썬 2에서는이 같은 기능을 사용할 수 있습니다 : from __future__ import print_function

대답

탭을 업데이트하려면 개행은 공백으로 간주합니다.

>> ' \r\n\t\v'.isspace() 
True 
+0

... 그리고 print 명령은 파일이 텍스트 모드에서 열렸을 때부터 –

+0

'rstrip ("\ n")'이면 충분하다고 생각되는 두 번째 줄 바꿈을 추가합니다. –

+0

@TimPietzcker, 네 말이 맞아. 귀하의 의견에 따라 답변을 편집했습니다. 고맙습니다. – falsetru

1
file.readlines() 

(도 file.readline())를 바꿈을 포함한다. 당신이 그들을 원하지 않는 경우

print i.replace('\n', '') 

를 수행합니다.

줄 끝 부분에 줄 바꿈을 포함하는 것이 이상하게 보일 수 있지만, 예를 들어 마지막 줄에 줄 바꿈 문자가 있는지 여부를 알 수 있습니다. 그 사건은 여러 언어로 까다로워. 'I/O.

1

다음은 개행을 제거합니다.

i = i.rstrip("\n") #strips newline 

희망이 도움이됩니다.