函数不正确地将 CSV 行标记为已损坏



>我有一个CSV文件,其中包含的数据应该是浮点数或整数,但如果不是,则该行将被标记为损坏。我有这个 if 语句,它检查每行中的几列以查看它们是否不为空,以及它们是浮点数还是整数。目前,程序将CSV文件中的每一行都标记为损坏。我该如何解决这个问题?

def check_if_number(num) :
    for i in num:
        if i == "." or i == "":
            pass
        else:
            try:
                float(i)
            except (ValueError, TypeError):
                return False
            return True
def check_if_empty(item) :
    if item == "" :
        return True
    else:
        return False
if (check_if_empty(row[5]) == False
and check_if_number(row[5]) == False
or check_if_empty(row[6]) == False
and check_if_number(row[6]) == False 
or check_if_empty(row[8]) == False
and check_if_number(row[8]) == False 
or check_if_empty(row[9]) == False
and check_if_number(row[9]) == False 
or check_if_empty(row[10]) == False
and check_if_number(row[10]) == False):
    corrupt = True

我认为当您希望它返回 False 时,您的第二个函数返回 True?

def check_if_empty(item) :
    if item == "" :
        return False
    else:
        return True

编辑:我已经简化并附加了一个更新的工作代码,该代码产生了您正在寻找的内容,只是为了帮助证实我的想法。

def check_if_number(num):
    float(num)
    for i in num:
        if i == "." or i == "":
            pass
        else:
            try:
                float(i)
            except (ValueError, TypeError):
                return False
            return True
def check_if_empty(item):
    if item == "" :
        return False
    else:
        return True
if check_if_empty('.4') == True and check_if_number('.4') == True:
    corrupt = False
else:
    corrupt = True
print(corrupt)
... False

相关内容

最新更新