2013-06-17 2 views
1

CSV에서 데이터를 가져 와서 PDF로 내보내기위한 테이블로 변환하는 프로그램을 작성하고 있습니다. 내가 사용하고있는 CSV에는 빈 행이 들어 있으므로 Python으로 행렬을 만들면 빈 행이 생깁니다. ''로 시작하는 모든 행을 삭제하고 싶습니다. 내가 작성한 코드는 다음과 같습니다.매트릭스에서 여러 행 삭제하기

두 개의 연속 된 빈 행이 하나만 있으면 삭제됩니다. 두 줄을 제거하는 방법에 대한 아이디어가 있습니까? 단지 시작하는 그들을로드하지 않습니다

##creates empty matrix 
with open(filename) as csvfile: 
serverinfo=csv.reader(csvfile, delimiter=",", quotechar="|") 
rows=0 

for row in serverinfo:  
    NumColumns = len(row)   
    rows += 1 

Matrix=[[0 for x in xrange(9)] for x in xrange(rows)] 
csvfile.close() 

##fills Matrix 
with open(filename) as csvfile: 
serverinfo=csv.reader(csvfile, delimiter=",", quotechar="|") 
rows=0 

for row in serverinfo: 
    colnum = 0 
    for col in row: 
     Matrix[rows][colnum] = col 
     if col==0: 
      del col 
     colnum += 1 
    rows += 1 
csvfile.close() 
+0

어떻게 CSV 파일을 읽고 있습니까? 'Matrix '란 무엇입니까? numpy 등을 다루고 있습니까? –

답변

0

을 대신 한 후이를 삭제 :

내가 만들고 다음 코드를 사용하여 매트릭스를 입력합니다. 또한 파일 크기를 두 번 다시 줄여서 짧게자를 수 있습니다. 열 제한이 9 인 것으로 나타나므로 각 행에 대해 0을 해당 크기로 채 웁니다. 예 :

import csv 
from itertools import chain, islice, repeat 

COLS = 9 # or pre-scan file to get max columns 
FILL_VALUE = 0 # or None, or blank for instance 
with open(filename) as fin: 
    csvin = csv.reader(fin) # use appropriate delimiter/dialect settings 
    non_blanks = (row for row in csvin if row[0]) # filter out rows with blank 1st col 
    matrix = [list(islice(chain(row, repeat(FILL_VALUE)), COLS)) for row in non_blanks] 

데이터로 수행하는 작업에 따라 numpy 모듈과 사용 가능한 loadtxt() 메소드를 살펴볼 수도 있습니다.