Python报错TypeError:float对象无__getitem__属性的原因及解决方法
错误原因分析
嘿,咱们先把这个错误拆明白:
你写的lines = float(parts[1])这行代码,是把parts列表里的第二个元素(索引是1)转换成了单个浮点数,这个时候变量lines已经不是列表了,就是一个孤零零的数值(比如3.14这种)。
而后面你又写了print lines[0](Python3里还少了函数括号,应该是print(lines[0])),试图用索引[0]去取这个浮点数的第0个元素——但浮点数本身是单个值,根本没有“元素”这个概念,Python就会告诉你:float对象没有__getitem__方法(也就是不能用[]来索引),所以就抛出了那个TypeError。
修复方案(分两种常见需求)
得先对应你的真实需求,我给你两种常见场景的修复代码:
场景1:提取每行第二个元素转成浮点数并打印
如果你的目标是提取每行分割后的第二个元素,转成浮点数后直接打印,那代码改成这样:
with open('trace.txt') as inf: for line in inf: parts = line.strip().split() # strip()先去掉行首尾空白,避免无效空元素 # 先判断分割后有没有至少2个元素,防止索引越界报错 if len(parts) >= 2: target_float = float(parts[1]) print(target_float)
场景2:把整行元素转成浮点数列表后打印第一个
如果是想把整行的所有分割元素都转成浮点数列表,再取第一个元素打印,那代码是这样:
with open('trace.txt') as inf: for line in inf: parts = line.strip().split() if parts: # 先确保这行不是空行 float_list = [float(part) for part in parts] print(float_list[0])
另外提个小细节:Python3里print是函数,必须加括号,所以记得把print lines[0]改成print(...)哦。
内容的提问来源于stack exchange,提问作者fieq.fikri
相关产品推荐
相关产品推荐

