首页 > 解决方案 > 不可迭代的参数

问题描述

我正在尝试通过以下代码从 excel 中提取其描述(第 2 列)中具有“好”的名称列表(第 1 列),但我不断收到此错误: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)

标签: python-3.x

解决方案


您会收到此错误,因为 description 最后在运行时返回值 None 。您只需检查 name==None 而不是 description 但 description 中的行 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)

推荐阅读