不可迭代的参数

时间:2019-07-07 05:06:49

标签: python-3.x

我正尝试通过以下代码从excel中提取名称描述(列2)中具有“好”名称的列表(列2),但我一直收到此错误消息: TypeError:“ NoneType”类型的参数不可迭代

import openpyxl
import os
import pprint
os.chdir('C:\\')
wb = openpyxl.load_workbook('Book1.xlsx')
sheet = wb['Sheet1']
row = 1
names = {}
while True:
    (name, description) = (sheet.cell(row, 1).value, sheet.cell(row, 2).value)
    nameCheck = 'good' in description
    if name == None:
        break
    if nameCheck:
        names[name] = description
    row = row + 1
pprint.pprint(names)

2 个答案:

答案 0 :(得分:0)

您收到此错误,是因为描述最后在运行时返回值None。您只检查name == None而不是描述,但描述中的行nameCheck ='good'最后返回None,这就是为什么出现Nonetype错误的原因。若要解决此问题,也对描述变量使用if条件。请参考以下代码。

import openpyxl
import os
import pprint
os.chdir('C:\\')
wb = openpyxl.load_workbook('Book1.xlsx')
sheet = wb['Sheet1']
row = 1
names = {}
while True:
    (name, description) = (sheet.cell(row, 1).value, sheet.cell(row, 2).value)
    if description is not None:
        nameCheck = 'good' in description
        if nameCheck:
            names[name] = description
    if name == None:
        break
    row = row + 1
pprint.pprint(names)

答案 1 :(得分:0)

我解决了我的问题,但是我不知道我对问题的理解是否正确。 在代码中,您只应以这种方式定义nameCheck: str(说明)中的nameCheck ='good' 实际上,“ description = sheet.cell(row,2).value”中的“ description”不是可以迭代的字符串!因此,通过将其类型更改为字符串,我们可以将其转换为可迭代类型。