使用Python解析选择性列和行

时间:2017-06-12 07:17:54

标签: python xlrd

我有xls类型的文件有9列和不同的行数。我想使用xlrd或其他模块,以便我可以从九列中的第一列和第二列中提取所有值,然后单独使用提取的值。到目前为止,我的代码看起来像:

    import xlrd
    import openpyxl

    workbook = xlrd.open_workbook('C09.xls')

    sheet_names = workbook.sheet_names()


    sheet = workbook.sheet_by_name(sheet_names[0])

    num_rows = sheet.nrows
    num_cols = sheet.ncols

    plist = [[0 for x in range(3)] for x in range(num_rows)]

    for i in range(num_rows):
        for j in range(3):
           plist[i][j] = sheet.cell(i,j).value

然后使用[i]中的值(例如进行乘法和诸如此类),然后从[j]中提取相应的值。

上面的代码给出了如下输出:

    [['Col header 1', 'Col header 2', 'Col header 3'], [1.0, 1000, 2000], [2.0, 1001, 2001], ..... so on]

有一种简单的方法吗?我是Python的新手,所以如果你能更具体一点,我将不胜感激。非常感谢你!

1 个答案:

答案 0 :(得分:1)

一些反馈/改进:

在您的代码段中,初始化部分是多余的。这避免了双重迭代:

plist = [[sheet.cell(i,j).value for j in range(3)] for i in xrange(num_rows)]

如果您遇到None值,可以使用以下标准对它们进行标准化:

plist = [[sheet.cell(i,j).value or 0 for j in range(3)] for i in xrange(num_rows)]

最后,这是一种更为Pythonic的0初始化方式:

plist = [x[:] for x in [[0] * 3] * sheet.nrows