Python TypeError: ‘float’ object is not subscriptable错误解决

七月
七月
发布时间:2026-10-16| 9人浏览过
原创

本文解决Python中TypeError: ‘float’ object is not subscriptable错误。当从JSON读取浮点型score并尝试切片写入TXT时,直接对float使用下标会报错。通过先将score转换为字符串str(),再进行切片操作,可顺利写入文件。

前言

这其实是一个常见的小问题,但报错时往往让人感到困惑。之前的代码运行一直正常,只是在更换不同的文件进行批量处理时出现了异常。关键在于,这些不同文件需要处理的内容结构和格式完全一致,其中一个文件能顺利执行,而另一个却抛出了TypeError: ‘float’ object is not subscriptable异常,这种情况确实令人头疼。接下来我们将探讨如何解决这一问题。

遇到此类问题,首先的做法是直接搜索解决方案。虽然查阅了一些博客文章,但并没有找到直接针对该场景的现成答案,不过这些资料帮助我对问题本质有了更清晰的理解。以下是我在搜索过程中找到的一种相关解释思路。

下面具体说明我的应用场景。

我的需求是从预测生成的JSON文件中提取预测分数(score)和预测位置坐标,并将这些数据写入到TXT文档中。

ff = open('xx.txt','w')
for anno in annos:
	score = anno['score']
	left,top,right,bottom = anno['box']
	ff.write("%s %s %s %s %s\n" %(score[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))
ff.close()

JSON文件的具体内容格式如下所示。

{
	"annos":[
		{
			"score":0.999976544,
			"box":[
				145.436234753274657
				456.312645236453657
				254.327564356457435
				553.957943578765678
				]
		},
		{
			"score":0.9996542376,
			"box":[
				344.436234753274657
				987.312645236453657
				423.327564356457435
				234.957943578765678
				]
		},
		...
	]
}

具体的报错发生在执行文件写入操作的环节。

ff.write("%s %s %s %s %s\n" %(score[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))

起初,我将注意力集中在box内容的读取上。box包含四个浮点数,且位于一个列表结构中,网上搜索到的相关方法也多与列表内容的处理有关。

随后,我通过控制变量法进行排查,确认box部分的读取没有问题。因此,问题锁定在score[:6]这一写入操作上,正是这里触发了报错。

我的解决方案如下。

"""先把读取到的score转化为字符,再进行写入"""
xx = str(anno['score'])
ff.write("%s %s %s %s %s\n" %(xx[:6], str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))

按照上述修改后,代码可以顺利执行,不再出现TypeError: ‘float’ object is not subscriptable错误。

起初我曾尝试直接在最后一句写入代码中处理,即尝试对score进行切片后转为字符串。

ff.write("%s %s %s %s %s\n" %(str(score[:6]), str(int(left)), str(int(top)),str(int(right)),str(int(bottom))))

结果发现这样依然会报错。这说明在直接写入时,源数据不能是浮点型。这可能是因为从annos列表中直接读取出的浮点数据无法直接进行切片处理。即使经过中间步骤,也必须先将数据转换为字符型(str),然后再进行写入,这样才能解决问题。

实际上,这个问题更像是一个特定情境下的逻辑陷阱,并非一定会出现,但如果遇到了,

就需要花费时间去排查和解决。

总结

到此这篇关于Python TypeError: ‘float‘ object is not subscriptable错误解决的文章就介绍到这了,更多相关TypeError: ‘float’ object is not subscriptable内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。