为什么 "None" 值在 clientIDArray 中?
Why is "None" value In clientIDArray?
如果单元格为空,openPyxl 会放置一个 None 值,但我认为我的逻辑会阻止 None 值填充到数组中。
from openpyxl import Workbook
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
sheetArray = []
for sheetName in wb.sheetnames:
sheetArray.append(sheetName)
# print(sheetName)
sheet_1 = wb[sheetArray[0]]
lastRow = sheet_1.max_row
# print(lastRow)
clientIDArray = []
for row in sheet_1.iter_rows(min_row=1, max_row=lastRow, min_col=1, max_col=1):
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
for id in clientIDArray:
print(id)
wb.close()
你放在哪里
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
[row[0].value]
正在创建一个以 row[0].value
作为其项目的列表。这意味着作为列表,它永远不会是 None
,因此您的 if 语句始终执行,并且 None
值被放入数组中。
如果 row[0].value
是 None
那么你的 if 语句变成
if [None] != "None":
并且列表永远不会是 None
。
此外,您应该使用 None
而不是 "None"
您应该像这样更改代码。 None
是 built-in 对象。
https://docs.python.org/3.6/library/constants.html#None
if row[0].value is not None:
首先,if [row[0].value] != "None":
正在比较单个元素为 row[0].value
的列表。该列表永远不能等于 None
或 "None"
或除列表以外的任何其他内容。您可能只想比较 row[0].value
.
其次,您要过滤掉的值可能是 None
值,而不是字符为 "None"
.
的字符串值
第三,如果最后一个是对的,你几乎总是想用is
,而不是==
来和None
比较。
所以:
if row[0].value is not None:
openPyxl 会放置一个 None 值,但我认为我的逻辑会阻止 None 值填充到数组中。
from openpyxl import Workbook
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
sheetArray = []
for sheetName in wb.sheetnames:
sheetArray.append(sheetName)
# print(sheetName)
sheet_1 = wb[sheetArray[0]]
lastRow = sheet_1.max_row
# print(lastRow)
clientIDArray = []
for row in sheet_1.iter_rows(min_row=1, max_row=lastRow, min_col=1, max_col=1):
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
for id in clientIDArray:
print(id)
wb.close()
你放在哪里
if [row[0].value] != "None":
clientIDArray.append(row[0].value)
[row[0].value]
正在创建一个以 row[0].value
作为其项目的列表。这意味着作为列表,它永远不会是 None
,因此您的 if 语句始终执行,并且 None
值被放入数组中。
如果 row[0].value
是 None
那么你的 if 语句变成
if [None] != "None":
并且列表永远不会是 None
。
此外,您应该使用 None
而不是 "None"
您应该像这样更改代码。 None
是 built-in 对象。
https://docs.python.org/3.6/library/constants.html#None
if row[0].value is not None:
首先,if [row[0].value] != "None":
正在比较单个元素为 row[0].value
的列表。该列表永远不能等于 None
或 "None"
或除列表以外的任何其他内容。您可能只想比较 row[0].value
.
其次,您要过滤掉的值可能是 None
值,而不是字符为 "None"
.
第三,如果最后一个是对的,你几乎总是想用is
,而不是==
来和None
比较。
所以:
if row[0].value is not None: