打字时使用zip

我想从几个xlsx文件添加特定的行到我的Python脚本列表。 我试图添加的行是列号4(E列)的单元格值减去列号1(B列)的单元格值不等于0.我的xlsx文件如下所示:

ABCDEFGH 1 A10 2 A10 2 AB 2 A105 1 A105 2 AB 

所以对于下面的代码,我希望第二行被添加到打开的列表数字,因为2-1的总和不是0.然后我想通过将它们添加到列列表,然后将它们放入一个新的列表,mainlist,一切sorting。 这是我的代码:

 import logging import pandas as pd from openpyxl import Workbook, load_workbook import glob from openpyxl.utils.dataframe import dataframe_to_rows numbers = [] rapp = r"C:\Myfolder" files = glob.glob(rapp) for file in files: df = pd.read_excel(file) numbers = df.iloc[:, 4], df.iloc[:,1][df.iloc[:, 4] - df.iloc[:,1] != 0].tolist() excel_input = load_workbook(excelfile) ws = excel_input.active for r in dataframe_to_rows(df, index=True, header=True): ws.append(r) else: pass col1 = [] col2 = [] col4 = [] col5 = [] col7 = [] col8 = [] mainlist = [] try: for row in numbers: col1.append(ws.cell(row=row, column=1).value) col2.append(ws.cell(row=row, column=2).value) col4.append(ws.cell(row=row, column=4).value) col5.append(ws.cell(row=row, column=5).value) col7.append(ws.cell(row=row, column=7).value) col8.append(ws.cell(row=row, column=8).value) except AttributeError: logging.error('Something is wrong') finally: for col1, col2, col4, col5, col7, col8 in zip: #Error mainlist.append(col1, col2, col4, col5, col7, col8) return mainlist 

这是错误:

 Traceback: for col1, col2, col4, col5, col7, col8 in zip TypeError: 'type' object is not iterable. 

这给了我错误。 我知道这里有一些错误,我很抱歉,但这是我能想出来解决我的任务的最好的。 任何人都可以帮助我的方式吗? 我会非常感激! 我是python的新手。 在Python 3.4.1中工作。

你问题是你使用zip ,这是你永远不会定义的variables。 但是,因为zip()是一个返回zip-class对象的内置函数 ,所以这是令人困惑的事情。

for col1, col2, col4, col5, col7, col8 in zip:正试图find一个名为zip的迭代器,并带有6 for col1, col2, col4, col5, col7, col8 in zip:组件。 因为zip()是内置的,所以Python读取这一行为“遍历ziptypes”,但是types不可迭代,所以您会收到相应的错误。 如果你select了一个不是内置的东西,你会得到一个NameError

你的例子有点不清楚,但我相信你可以通过使用下面的finally块( 概念certificate )来修复它:

 finally: columns = zip(col1, col2, col4, col5, col7, col8) for column in columns: mainlist.append(column)