0

在文本文件中,我必须写入值,并且"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方法来完成这项工作?

4

1 回答 1

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.

于 2013-09-26T15:03:00.727 回答