繁体   English   中英

使用openpyxl从Excel工作表中的行读取到列表列表

[英]Reading rows from Excel sheet to list of lists using openpyxl

我是Python的新手,正在研究要使用python阅读的Excel工作表。 我想将这些行读入列表列表。 我已经尝试过使用Openpyxl

rows_iter = ws.iter_rows(min_col = 1, min_row = 2, max_col = 11, max_row = ws.max_row)

val1 = [[cell.value for cell in row] for row in rows_iter]

但这给了我所有行的一个列表作为列表中的内容。

我想制作包含15或12或10行的不同列表(取决于条件)。

请你帮助我好吗。 这是示例Excel文件,获得的输出和预期的输出。 预期产量获得op 我最多只能附加2个附件! 提前致谢!

rows_iter = ws.iter_rows(min_col = 1, min_row = 2, max_col = 11, max_row = ws.max_row)

val_intermediate = [[cell.value for cell in list(row)] for row in rows_iter]

# This would be set to whatever cell value contains N
N = ws['A1'].value

# This splits your shallow list of lists into a list of N lists of lists (!)
val1 = [val_intermediate[j:j+N] for j in range(1,len(val_intermediate),N)]

说明:第一个列表理解将返回一个浅表列表。 第二个列表理解功能将您的浅列表列表转换为N个条目长的一组列表列表。 要查看其工作原理,请考虑以下示例数据:

In [1]: a = [['a','b','c'],['d','e','f'],['g','h','i'],['j','k','l'] ['m','n','o'],['p','q','r']]

In [2]: N=2; [a[j:j+N] for j in range(1,len(a),N)]

Out[2]:
[[['d', 'e', 'f'], ['g', 'h', 'i']],
 [['j', 'k', 'l'], ['m', 'n', 'o']],
 [['p', 'q', 'r']]]

In [3]: N=3; [a[j:j+N] for j in range(1,len(a),N)]

Out[3]:
[[['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']],
 [['m', 'n', 'o'], ['p', 'q', 'r']]]

range(1,len(a),N)将创建一个从1到len(a)的整数序列,跳过N个数字,这样便可以选择正确的位置来拆分浅表列表。 由于[j:j+N]索引,它捕获了N-1个项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM