我正在尝试加载一个包含两个列数据的文本文件,由一个标签分隔。第一列值可以是整数或浮点数,而第二列始终是浮点数。现在,我使用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
答案 0 :(得分:1)
您可以按照
中的建议尝试此操作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'>