2017-11-27 1 views
1

입력 된 xrange를 사용하여 목록에서 행을 인쇄하는 방법을 알아 내려고합니다. 나는 아직도 배우고 논리를 명확하게 따르기를 원하기 때문에 코드를 간략하게하지 않으려 고 노력하고있다. 그래서 내가 원하는 것은 사용자가 제공 한 인자로부터 여러 행을 출력하는 것이다.xrange 결과를 사용하여 목록 (CSV)에서 행을 인쇄하는 방법은 무엇입니까?

import csv 
import sys 

sourcef = sys.argv[1] # Source file path/name 
destf = sys.argv[2] # Destination file path/name 
linestart = int(sys.argv[3]) # Starting row to delete 
lineend = int(sys.argv[4]) # Ending row to delete 

with open (sourcef, 'rb') as file1, open (destf, 'wb') as file2: 
    reader = csv.reader(file1) 
    writer = csv.writer(file2) 
    row = list(reader) 
    for i in xrange(linestart, lineend): 
     print i 
+0

지금까지 어떤 시도를 했습니까? 무슨 일 이니? – user1767754

+0

다른 변수로 xrange를 설정 한 다음 시도해 보았습니다. 인쇄 행 [변수] int를 원하기 때문에 좋아하지 않으므로 xrange를 int로 설정해 보았습니다. 그리고 그것에 대해 더 많은 오류가 있습니다. 목록 방법은 나를 위해 가장 간단한 것, 사람들은 이것을하는 다른 방법을 가르쳐 봤는데 그들은 훨씬 더 복잡했습니다. 내 범위를 인쇄 할 행 []을 얻을 수 있다면 나는 황금색이 될 것입니다. –

답변

1

은 당신이 원하는 것은 xrangeslice 대상이 아닌 : 내가 잘못된 순서의 일부를 알고,하지만 난 그것을 입력하는 방법에 붙어 ... 여기에 지금까지 무엇을 가지고

... 
rows = list(reader) 
for x in rows[linestart: lineend]: 
    print x 

당신은 어디 ONL 특히 경우에 목록으로 reader 반복자를 구체화 할 필요가 없습니다 수의 더 자세한 형태이다

... 
rows = list(reader) 
for x in rows[slice(linestart, lineend)]: 
    print x 

행의 작은 부분이 필요합니다. 이 경우 itertools.islice을 사용할 수 있습니다.

from itertools import islice 

... 
for x in islice(reader, linestart, lineend) 
    print x 
+0

예 !!!! 고맙다. 나는이 구문 분석 스크립트를 며칠 동안 망치고있다. 나는 프로그래밍 언어를 배우는 데 매우 느리며 스스로 설명서와 Stackoverflow를 읽는 답을 찾기 위해 노력했습니다. 와우, 그렇게 잘 돌아갔다. 감사! @moseskoledoye –

+1

@ DevinSt.Clair 환영합니다. 그것이 도움이된다면 답을 받아 들여야한다는 것을 잊지 마십시오. –

+0

지연에 대한 사과, 몇 분 동안 대답을 답장으로 설정하지 못하게 잠겼다가 일을 그만 두어야했습니다. 다시 한 번 감사드립니다. 정말 그 누락 된 조각 아래서 나를 도왔고 더 많이 쓰게되어 기쁩니다. –

관련 문제