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

2024-05-15 21:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有许多单页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))

这并没有给我我要查找的列表,而是一个生成器对象的列表。我在这里做错了什么?我怎样才能得到我要找的名单?在


Tags: 文件in列表foros单页excelrow
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))
    ws=wb.sheets()[0]
    for row in range(1,ws.nrows):
        allData.append([fil]+[ws.name]+[val for val in ws.row_values(row)])

不确定你想要什么,我想问题是你在列表理解中缺少[]。

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

然后您的最终列表应该是[“Filename”、“WorksheetName”、[row\u value list]]

简单点:

^{pr2}$

看来你对清单的理解不正确。应改为:

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

我还建议建立s1=工作表()[0]使代码更易读,速度更快

^{pr2}$

你在评论中还提到,你想看看如何用多个工作表来实现这一点。假设每个字段都相同,则可以使用以下选项:

^{3}$

相关问题 更多 >