我有一个从excel工作簿表的名称创建的列表:
file = 'Per_6_PL.xlsx'
wb = pd.ExcelFile(file)
sheet_list = [wb.sheet_names]
我可以看到以下代码列表:
type(sheet_list)
list
我想删除列表的第一个元素,并使用其他元素构建循环。
当我尝试通过del
或.remove
方法删除列表的第一个元素时,它将删除整个列表。
del sheet_list[0]
sheet_list
[]
另外,我无法从列表中切片元素,因为我得到了返回的整个列表:
sheet_list[0:3]
[['Table of Contents',
'07',
'01',
'01.01',
'13',
'13.01',
'3002',
'3005',
'3003',
'3004',
...
我不确定这里发生了什么。我对Python还是很陌生,不了解是什么导致了这种行为。我想要一个所有工作表名称的列表,省略第一个元素。谁能告诉我我在做什么错以及如何解决?
答案 0 :(得分:5)
您将数据作为嵌套列表加载。根据下面的 ALollz 评论:
map
将forEach
中包含的数据加载到列表中,如将其包装在硬括号(“ [”,“]”)中所指定的那样。这意味着您将sheet_list = [wb.sheet_names]
的列表数据加载到另一个列表中,并将它们嵌套。加载为
wb.sheet_names
,您的脚本无需更改即可正常工作。
答案 1 :(得分:2)
您的列表实际上是二维列表。列表的每个元素都是工作表名称的列表。因此,当您删除sheet_list
的第一项时,实际上是在删除整个列表。
要使sheet_list
仅将工作表名称包含在一个列表中,请使用以下代码:
file = 'Per_6_PL.xlsx'
wb = pd.ExcelFile(file)
sheet_list = wb.sheet_names
然后,删除“目录”:
del sheet_list[0]
sheet_list
[ '07',
'01',
'01.01',
'13',
'13.01',
'3002',
'3005',
'3003',
'3004',
...