python-3.x - 不可迭代的参数
问题描述
我正在尝试通过以下代码从 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)
解决方案
您会收到此错误,因为 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)
推荐阅读
- javascript - 反应状态更新但不映射
- html - 为什么与类“容器”紧贴左边缘?
- java - Java SDK 在 aws s3 存储桶中获取特定文件夹大小
- android - Mapbox Map Kotlin 注释插件 - 需要“样式”,找到“样式?”
- flutter - Dart 错误:错误:当前 Dart 运行时不支持导入 dart:mirrors
- laravel - docker中的Laravel应用程序未连接到数据库
- c++ - 原子栅栏必须配对
- c# - 提交后需要进行部分重新加载,以便用户不需要“刷新”或“F5”
- python - 20种不同类型消息的朴素贝叶斯分类只能预测三种不同类型的消息
- c - 在 C 中使用线程实现管道