2013-07-28 2 views
-6

그래서 txt 파일에서 짝수 번째 줄을 읽으려면 코드가 필요합니다. 다음은 작업의 예입니다.Python. 텍스트 파일의 짝수 번째 줄

입력 :

Bravely bold Sir Robin rode forth from Camelot 
Yes, brave Sir Robin turned about 
He was not afraid to die, O brave Sir Robin 
And gallantly he chickened out 
He was not at all afraid to be killed in nasty ways 
Bravely talking to his feet 
Brave, brave, brave, brave Sir Robin 
He beat a very brave retreat 

출력 :

Yes, brave Sir Robin turned about 
And gallantly he chickened out 
Bravely talking to his feet 
He beat a very brave retreat 
+2

그래서 문제가 무엇입니까? [여기] (http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files)를 시작하십시오. –

답변

2

그래서, 바로 출력 짝수 라인을.

i = 1 
f = open('file') 
for line in f.readlines(): 
    if i % 2 == 0 : 
     print line 
    i += 1 
+0

모든 행을 메모리에로드하는'file.readlines'를 사용하는 대신 파일 객체 자체를 반복 할 수 있습니다. 두 번째로 수동 인덱싱 대신'enumerate'를 사용합니다. –

+0

@AshwiniChaudhary 예. Thx에 대한 귀하의 코멘트. – MarshalSHI

+0

'if i % 2 = 0'은'SyntaxError'를 발생시킵니다. –

3

사용 itertools.islice이 같은

import itertools 
import sys 

with open('input.txt') as f: 
    sys.stdout.writelines(itertools.islice(f, 1, None, 2)) 
0

뭔가 :

with open('in.txt','r') as f: 
    file = f.readlines() 

for i in range(1,8,2): 
    print file[i] 

이 인쇄됩니다 :

Yes, brave Sir Robin turned about 

And gallantly he chickened out 

Bravely talking to his feet 

He beat a very brave retreat 
0

이것은 내가 파이썬 3.x를을 추정, 어떻게 할 것입니다 :

with open("input.txt") as f: 
    result = list(f)[1::2] 

첫 번째 줄은 파일을 열고, 문으로는 컨텍스트에 넣습니다. 이 문맥에서 (말장난 없음) 이는 파일이 자동으로 닫히는 것을 의미합니다. 다음 행은 파일의 모든 행을 포함하는 파일 목록을 가져옵니다. 그런 다음 목록은 위치 1에서 시작하여 매번 두 개의 요소 또는 선을 점프하여 슬라이스됩니다. 그러면 변수 결과에 할당됩니다.

+0

파일에 10 억 개의 행이 있다면 어떻게 될까요? 모든 줄을 메모리에 저장하고 있습니다. –

+0

위의 대답에서와 같이 itertools.islice를 사용 하겠지만, 좀 더 복잡하고 아마도 내 대답보다 더 많은 새로운 개념을 포함하고있을 것입니다. 나는 단순함과 간결함과 함께 갈 것이라고 생각했습니다. – rlms

관련 문제