日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python?TypeError:?‘float‘?object?is?not?subscriptable錯誤解決_python

作者:清夢枕星河~ ? 更新時間: 2023-01-29 編程語言

前言

其實就是個小問題,但是爆出來的時候也很莫名其妙。因為之前都跑得好好的,只是換了不同的文件去跑才出的問題,關鍵是不同的文件要處理的內容和格式都是完全一樣的,一個順利跑完,一個就報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的內容讀取上,他是四個浮點數位于一個列表下,而且搜到的方法也和列表內容相關

后面通過我的控制變量試驗后發現這里是沒問題的,所以問題就是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

原先想過,直接把str加在最后一句上,即:

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

發現還是會報錯,也就是說直接寫的時候讀的不能是浮點型數據(可能是此處直接從annos的列表中讀取出來的浮點數據不能直接處理),即使經過中間處理也不行,需要轉化為字符型后再寫入即可解決

其實這個問題更像一個bug并不是一定會出現的問題,如果報錯了,

就要花時間解決一下。

總結

原文鏈接:https://blog.csdn.net/qq_44442727/article/details/126479409

相關推薦

欄目分類
最近更新