gpt4 book ai didi

python - Excel Sheet 上的两个 if 测试条件,使用 xlrd

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:12 24 4
gpt4 key购买 nike

我使用以下代码从 Excel 文件中提取数据:

for row in range(sheet.nrows):                      # For-loop, for all rows
for col in range(sheet.ncols): # For-loop, for all columns
if((re.match(r'F\d-\w*',str(sheet.cell(row,col).value))) and str(sheet.cell(row+2,col).value)!=None): # If cell starts with F(number)-(several word chars) AND if cell two rows below this is not empty
works2.write(num_row+1,num_col,(sheet.cell(row,col)).value)
works2.write(num_row, num_col,(sheet.cell(row-2,col)).value
ect...

这段代码运行得很好,直到我将第二个条件添加到 if 测试。我不希望代码读取没有数据的列的任何内容,即第二个 if 测试条件。然而,目前,第二个 if 测试什么也不做,我仍在读取一些空数据列。有人可以帮助我发现我的错误/可能重新表述我的第二个 if 测试,以便它检查单元格 (row, col) 下面的 2 行单元格是否为空,并且仅在 if-test 下输入命令(如果不是)?

很抱歉问了这么基本的问题。我似乎无法让它做我想做的事......

最佳答案

你的第二个条件是错误的,你实际上在做 -

str(sheet.cell(row+2,col).value)!=None)

您正在将 sheet.cell(row+2,col).value 的结果转换为字符串,如果 Nonestr(sheet .cell(row+2,col).value) 将是字符串 'None' 并且这永远不会等于 None ,你永远不会得到str()None 输出。这就是为什么它表现得好像这种情况从未存在过一样。

你应该尝试 -

if (re.match(r'F\d-\w*',str(sheet.cell(row,col).value))) and sheet.cell(row+2,col).value not in [None, '']:

在这种新条件下,对于 sheet.cell(row+2,col).valueNone 都可以正确工作。

关于python - Excel Sheet 上的两个 if 测试条件,使用 xlrd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com