当list用于检查Python时,isinstance不工作

时间:2015-02-12 01:00:01

标签: python floating-point integer isinstance

我正在尝试加载一个包含两个列数据的文本文件,由一个标签分隔。第一列值可以是整数或浮点数,而第二列始终是浮点数。现在,我使用isinstance来查看我的第一列是整数还是浮点数。但是,当使用值列表或列表的最终元素时,isinstance似乎不起作用。这是我的代码:

time_t = []
with open(logF, 'r') as f:
    for line in f:
        data_t = line.split()
        time_t.append(data_t[0])

time_length_max = time_t[-1]
print time_length_max

if isinstance(time_length_max, (int, long)):
   print "True"
 else:
   print "False"

我得到的输出是:

10000
False

假设,我声明time_length_max = 10000,而不是time_length_max = time_t[-1],我得到:

10000
True

2 个答案:

答案 0 :(得分:1)

您可以按照

中的建议尝试此操作
  

https://stackoverflow.com/a/379966/350429

def num(s):
    try:
        return int(s)
    except ValueError:
        return float(s)

time_t = []
with open(logF, 'r') as f:
    for line in f:
        data_t = line.split()
        time_t.append(num(data_t[0]))

time_length_max = time_t[-1]
print time_length_max

if isinstance(time_length_max, (int, long)):
   print "True"
 else:
   print "False"

请注意该值应该是文件中的数字,如果它是一个空字符串,那么它将抛出异常。

答案 1 :(得分:0)

split返回字符串。在询问它是否是整数的实例之前,您可能希望将字符串转换为整数。

>>> type('10000')
<type 'str'>
>>> type(10000)
<type 'int'>
>>> type(int('10000'))
<type 'int'>