我发现以下代码对帮助我“处理”“无”值(包括“空格”字符)非常有用,根据情况应将其视为“无”。我已经使用此代码已有相当一段时间了:
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化的方式来做到这一点?如何改进此代码?其他人将如何解决这个问题?