2016-12-29 1 views
0

csv 파일을 통해 구문 분석 중이며 첫 번째 열을 삭제하는 중입니다. 필자는 파이썬에 행을 건너 뛰고 의미있는 데이터가있는 행만 쓰도록 지시하는 방법에 대한 도움을 요청합니다.첫 번째 행 집합을 작성하십시오.

Result CSV: 

Presented_By  Sources  Salesman 
John    Radio   Mary 
Edwin    Newspaper  Bexie 
Ben    Radio   Jon 




        Radio    2 
        Newspaper   1 

소스가 계산되는 하단의 부분을 제외하고 싶습니다. 파이썬이 두 번째 부분을 무시하도록 알려줄 코드 조각에 무엇을 추가 할 수 있습니까?

import csv 
with open("InfoCenterTracker.csv","rb") as source: 
    rdr= csv.reader(source) 
    with open("result.csv","wb") as result: 
     wtr= csv.writer(result) 
     for r in rdr: 
      wtr.writerow((r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11], r[12], r[13], r[14], r[15], r[16], r[17], r[18])) 

     print "Column deleted" 
+0

으로 쓰고 쓰기 전에 파일에 쓰지 않았는지 확인하십시오. 'if','for' 그리고'all()'또는'any()'를 사용할 수 있습니다. – furas

+0

예 Furas, 파이썬에게 첫 번째 열에 값이있는 행만 쓰도록 말할 수 있습니다. –

+0

'if r [1] : wtr.writerow (...)'? * csv * 파일의 구조 만 알고 있으므로 직접 필터링을 구현해야합니다. –

답변

0

빈 첫 번째 열이있는 행을 건너 뛸 것이라고 가정하는 것이 맞습니까? 첫 번째 행이 비어있는 실제 데이터 행이 있습니까?

그 안전 할 경우, 당신은 추가 할 수 있습니다 : 당신의 이중 괄호 의도적 인 경우 내가 궁금하네요

if r[1] == "": 
    pass 
else: 
    wtr.writerow(<Row contents>) 

? if 문 어쩌면이

wtr.writerow(r) 
+0

당신은'pass'없이 그것을 쓸 수 있습니다 - 위의 @AndrejsCainikovs 주석을보십시오. – furas

+0

예 Owen이 맞습니다. 첫 번째 열에 NO 값이 있으면 건너 뜁니다. 네, 이중 괄호는 루키 실수입니다. –

0

로 단축 할 수는 비어와 r[1]continue 루프 비어 있지 않은 경우 r[0]의 내용을 확인하기 위해 추가합니다.

은 또한 당신은

당신은 함수 호출의 인수에 목록을 확장 *r[starting:end index]을 사용할 수 있습니다 .. 인수 목록의 모든 항목을 작성할 필요가 없습니다. 튜플이 필요하다면