我正尝试通过以下代码从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)
答案 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”不是可以迭代的字符串!因此,通过将其类型更改为字符串,我们可以将其转换为可迭代类型。