我有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的新手,所以如果你能更具体一点,我将不胜感激。非常感谢你!
答案 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