欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤解決

 更新時(shí)間:2022年12月23日 14:36:44   作者:清夢(mèng)枕星河~  
發(fā)現(xiàn)問題寫python的時(shí)候出現(xiàn)了這個(gè)錯(cuò),所以想著給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤的解決辦法,需要的朋友可以參考下

前言

其實(shí)就是個(gè)小問題,但是爆出來的時(shí)候也很莫名其妙。因?yàn)橹岸寂艿煤煤玫?,只是換了不同的文件去跑才出的問題,關(guān)鍵是不同的文件要處理的內(nèi)容和格式都是完全一樣的,一個(gè)順利跑完,一個(gè)就報(bào)TypeError: ‘float’ object is not subscriptable這個(gè)錯(cuò),就非常無語。接下來就是看看怎么解決問題了:

一開始自然是直接搜索問題,尋找解決辦法,實(shí)話實(shí)說,看了一些博客,但是并沒有直接找到解決辦法,但是從中獲得了一些想法,對(duì)問題理解更清楚一點(diǎn)。下面是找到的一種解釋:

然后說一下我的具體應(yīng)用:

我需要從預(yù)測(cè)生成的 json文件獲取預(yù)測(cè)分?jǐn)?shù)score和預(yù)測(cè)位置(坐標(biāo)值)把它們寫入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文件內(nèi)容格式:

{
	"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
				]
		},
		...
	]
}

具體問題是在執(zhí)行寫入的時(shí)候出現(xiàn)的:

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

一開始我的關(guān)注點(diǎn)是放在box的內(nèi)容讀取上,他是四個(gè)浮點(diǎn)數(shù)位于一個(gè)列表下,而且搜到的方法也和列表內(nèi)容相關(guān)

后面通過我的控制變量試驗(yàn)后發(fā)現(xiàn)這里是沒問題的,所以問題就是score[:6]的寫入報(bào)了錯(cuò)

我的解決辦法是:

"""先把讀取到的score轉(zhuǎn)化為字符,再進(jìn)行寫入"""
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))))

如上就可以順利執(zhí)行了,沒報(bào)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))))

發(fā)現(xiàn)還是會(huì)報(bào)錯(cuò),也就是說直接寫的時(shí)候讀的不能是浮點(diǎn)型數(shù)據(jù)(可能是此處直接從annos的列表中讀取出來的浮點(diǎn)數(shù)據(jù)不能直接處理),即使經(jīng)過中間處理也不行,需要轉(zhuǎn)化為字符型后再寫入即可解決

其實(shí)這個(gè)問題更像一個(gè)bug,并不是一定會(huì)出現(xiàn)的問題,如果報(bào)錯(cuò)了,

就要花時(shí)間解決一下。

總結(jié)

到此這篇關(guān)于Python TypeError: ‘float‘ object is not subscriptable錯(cuò)誤解決的文章就介紹到這了,更多相關(guān)TypeError: ‘float‘ object is not subscriptable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論