Pythonic方法使字符串依赖于变量的类型

时间:2013-09-26 14:53:36

标签: python if-statement boolean-logic

在文本文件中,我必须写入值,如果值的类型为"NUMERIC"intfloat,则必须在每个值旁边"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方法来完成这项工作吗?

1 个答案:

答案 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