0

我正在尝试加载一个包含两列数据的文本文件,由制表符分隔。第一列值可以是整数或浮点数,而第二列始终是浮点数。现在,我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
4

2 回答 2

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"

请注意,该值应该是文件中的数字,如果它是空字符串,则会引发异常。

于 2015-02-12T01:25:23.033 回答
0

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

>>> type('10000')
<type 'str'>
>>> type(10000)
<type 'int'>
>>> type(int('10000'))
<type 'int'>
于 2015-02-12T01:08:31.970 回答