在Python中常规处理Null值(和等效项)

时间:2019-05-03 13:02:11

标签: python

我发现以下代码对帮助我“处理”“无”值(包括“空格”字符)非常有用,根据情况应将其视为“无”。我已经使用此代码已有相当一段时间了:

class _MyUtils:

    def __init__(self):
        pass

    def _mynull(self, myval, myalt, mystrip=True, mynullstrings=["", "None"], mynuminstances=(int, float)):
        # if the value is None, return the alternative immediately.

        if myval is None:
            return myalt

        # if the value is a number, it is not None - so return the original
        elif isinstance(myval, mynuminstances):
            return myval

        # if the mystrip parameter is true, strip the original and test that
        else:
            if mystrip:
                testval = myval.strip()
            else:
                testval = myval

            # if mynullstrings are populated, check if the upper case of the
            # original value matches the upper case of any item in the list.
            # return the alternative if so.
            if len(mynullstrings) > 0:
                i = 0
                for ns in mynullstrings:
                    if ns.upper() == testval.upper():
                        i = i + 1
                        break
                if i > 0:
                    return myalt
                else:
                    return myval
            else:
                return myval


def main():
    x = _MyUtils()
    print(x._mynull(None, "alternative_value", True, [""]))


if __name__ == '__main__':
    main()

代码需要输入,如果输入被发现为Null,则提供替代方法,是否在测试过程中“剥离”输入(如果不是数字),将值“等同”为None和数字类型实例来确定输入是否为数字(因此不是数字)。

本质上,我们运行的太多进程依赖于正在处理的数据中是否没有None值(无论是lambda函数,自定义表工具集等)。此代码使我能够可预测地处理None值,但是我确保这里有更好的方法。有没有更Python化的方式来做到这一点?如何改进此代码?其他人将如何解决这个问题?

0 个答案:

没有答案