在文本文件中,我必须写入值,如果值的类型为"NUMERIC"
或int
或float
,则必须在每个值旁边"NOMINAL"
,如果类型为str
。
我知道这可以通过if
声明来解决,但我很乐意使用更优雅的方式。我想到了一个布尔乘法 - 就像那样:
outputfile.write(value1 + "_NOMINAL" * (type(value1) is str)
+ "_NUMERIC" * (type(value1) is (float or int)))
这不起作用 - 我不知道为什么......如果我将第二个表达式改为两个条件,它会起作用:
+ "_NUMERIC" * ((type(value1) is float) or (type(value1) is int))
还有其他优雅,pythonic方法来完成这项工作吗?
答案 0 :(得分:2)
如果你真的认为这很优雅(我想是品尝的话),试试:
outputfile.write(value1 + "_NOMINAL" * (type(value1) is str)
+ "_NUMERIC" * (type(value1) in (float, int)))
如果你问我,我想我会这样写(假设价值只是一个字符串或一个数字):
print >> outputfile, value1, "NOMINAL" if type(value1) is str else "NUMERIC"
或者,如果您想允许作为str
的子类元素的值:
print >> outputfile, value1, "NOMINAL" if isinstance(value1, str) else "NUMERIC"
如果有更多内容发生变化,具体取决于值的类型,或者如果有两种以上类型,我会使用if
。