gpt4 book ai didi

python - 代码创建生成器对象,但我想要一个列表

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:15 27 4
gpt4 key购买 nike

我有许多单页 Excel 文件,我想创建一个包含子列表的列表。每个子列表应该包含 1) 文件名,2) 工作表名称和 3) 工作表中除第一(标题)行之外的每一行的行值。我尝试了以下方法:

rdir=r"d:\temp"
import xlrd,spss
fils=[fil for fil in os.listdir(rdir) if fil.endswith(".xls")]
allData=[]
for cnt,fil in enumerate(fils):
wb=xlrd.open_workbook(os.path.join(rdir,fil))
allData.append([fil]+[wb.sheets()[0].name]+wb.sheets()[0].row_values(row) for row in range(1,wb.sheets()[0].nrows))

这并没有给我正在寻找的列表,而是生成器对象的列表。我在这里做错了什么,我怎样才能获得我正在寻找的列表?

最佳答案

看起来您的列表理解不正确。它应该是:

    allData.append([fil]+[wb.sheets()[0].name]+[wb.sheets()[0].row_values(row) for row in range(1,wb.sheets()[0].nrows)])

此外,我建议建立 s1 = wb.sheets()[0] 以使代码更易读且速度稍快

rdir=r"d:\temp"
import xlrd,spss
fils=[fil for fil in os.listdir(rdir) if fil.endswith(".xls")]
allData=[]
for cnt,fil in enumerate(fils):
wb=xlrd.open_workbook(os.path.join(rdir,fil))
s1 = wb.sheets()[0]
allData.append([fil]+[s1.name]+[s1.row_values(row) for row in range(1,s1.nrows)])

您还在评论中提到您想了解如何对多张纸执行此操作。假设您在每个字段中的字段都相同,您可以使用它:

rdir=r"d:\temp"
import xlrd,spss
fils=[fil for fil in os.listdir(rdir) if fil.endswith(".xls")]
allData=[]
for cnt,fil in enumerate(fils):
wb=xlrd.open_workbook(os.path.join(rdir,fil))
for sheet in wb.sheets():
allData.append([fil]+[sheet.name]+[sheet.row_values(row) for row in range(1,sheet.nrows)])

关于python - 代码创建生成器对象,但我想要一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13718335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com