[英]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.