2014-10-02 63 views
0

所以我试图在数据提取期间排除前三行。Python/Excel - 切片提取excel数据 - 排除行维护结构

for col_num in xrange(sheet.ncols): 
    col = sheet.col_values(col_num, start_rowx=3, end_rowx=None) 
    writer.writerow(col) #this syntax also may be skewing my results as well 

这个for循环消除了前3行放,然后把行变成列。

有关如何维护数据结构但同时消除行的任何建议?

低于全部脚本:

import glob 
import os 
import xlrd 
import csv 

ROOTDIR = r'C:\Users\username\Desktop\Mults' 
wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

workbooks = glob.glob(wb_pattern) 

with open('merged.csv', 'wb') as outcsv: 
writer = csv.writer(outcsv) 
    for wb in workbooks: 
     book_path = os.path.join(ROOTDIR, wb) 
     book = xlrd.open_workbook(book_path) 
     sheet = book.sheet_by_index(0) 
     for colx in xrange(sheet.ncols): 
      col = sheet.col_values(colx, start_rowx=2, end_rowx=None) 
      writer.writerow(col) #this syntax also may be skewing my results 

谢谢!

任何帮助非常感谢!

回答

0

如果你想要行值,你为什么拉列写行为?拉行值并写下:

import glob 
import os 
import xlrd 
import csv 

ROOTDIR = r'C:\Users\username\Desktop\Mults' 
wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

workbooks = glob.glob(wb_pattern) 
start_rownum = 3 # or wherever you want to start copying 
with open('merged.csv', 'wb') as outcsv: 
    writer = csv.writer(outcsv) 
    for wb in workbooks: 
     book_path = os.path.join(ROOTDIR, wb) 
     book = xlrd.open_workbook(book_path) 
     sheet = book.sheet_by_index(0) 
     for rownum in xrange(start_rownum, sheet.numrows): 
      row = sheet.row_values(rownum) 
      writer.writerow(row) 
+0

感谢您的快速响应。我明白你的意思。我显然误解了[col_value]语法。感谢您为我清除这个问题 – 2014-10-02 20:07:43

+0

'col_values'跨越多行对列进行切片,这对于处理电子表格是很好的,但对于'csvwriter'没有什么期望。 – 2014-10-02 20:14:22