Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤解決
前言
其實(shí)就是個(gè)小問(wèn)題,但是爆出來(lái)的時(shí)候也很莫名其妙。因?yàn)橹岸寂艿煤煤玫模皇菗Q了不同的文件去跑才出的問(wèn)題,關(guān)鍵是不同的文件要處理的內(nèi)容和格式都是完全一樣的,一個(gè)順利跑完,一個(gè)就報(bào)TypeError: ‘float’ object is not subscriptable這個(gè)錯(cuò),就非常無(wú)語(yǔ)。接下來(lái)就是看看怎么解決問(wèn)題了:
一開(kāi)始自然是直接搜索問(wèn)題,尋找解決辦法,實(shí)話(huà)實(shí)說(shuō),看了一些博客,但是并沒(méi)有直接找到解決辦法,但是從中獲得了一些想法,對(duì)問(wèn)題理解更清楚一點(diǎn)。下面是找到的一種解釋?zhuān)?/p>

然后說(shuō)一下我的具體應(yīng)用:
我需要從預(yù)測(cè)生成的 json文件獲取預(yù)測(cè)分?jǐn)?shù)score和預(yù)測(cè)位置(坐標(biāo)值)把它們寫(xiě)入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
]
},
...
]
}
具體問(wèn)題是在執(zhí)行寫(xiě)入的時(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))))
一開(kāi)始我的關(guān)注點(diǎn)是放在box的內(nèi)容讀取上,他是四個(gè)浮點(diǎn)數(shù)位于一個(gè)列表下,而且搜到的方法也和列表內(nèi)容相關(guān)
后面通過(guò)我的控制變量試驗(yàn)后發(fā)現(xiàn)這里是沒(méi)問(wèn)題的,所以問(wèn)題就是score[:6]的寫(xiě)入報(bào)了錯(cuò)
我的解決辦法是:
"""先把讀取到的score轉(zhuǎn)化為字符,再進(jìn)行寫(xiě)入"""
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í)行了,沒(méi)報(bào)TypeError: ‘float’ object is not subscriptable
原先想過(guò),直接把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ò),也就是說(shuō)直接寫(xiě)的時(shí)候讀的不能是浮點(diǎn)型數(shù)據(jù)(可能是此處直接從annos的列表中讀取出來(lái)的浮點(diǎn)數(shù)據(jù)不能直接處理),即使經(jīng)過(guò)中間處理也不行,需要轉(zhuǎn)化為字符型后再寫(xiě)入即可解決
其實(shí)這個(gè)問(wèn)題更像一個(gè)bug,并不是一定會(huì)出現(xiàn)的問(wè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)文章希望大家以后多多支持腳本之家!
- Python中報(bào)錯(cuò) “TypeError: ‘list‘ object is not callable”問(wèn)題及解決
- Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法
- Python開(kāi)發(fā)時(shí)報(bào)TypeError:?‘int‘?object?is?not?iterable錯(cuò)誤的解決方式
- python報(bào)錯(cuò)TypeError: Input z must be 2D, not 3D的解決方法
- 解決python錯(cuò)誤提示:TypeError: expected string or bytes-lik問(wèn)題
相關(guān)文章
對(duì)python 多線(xiàn)程中的守護(hù)線(xiàn)程與join的用法詳解
今天小編就為大家分享一篇對(duì)python 多線(xiàn)程中的守護(hù)線(xiàn)程與join的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
詳解Django的model查詢(xún)操作與查詢(xún)性能優(yōu)化
這篇文章主要介紹了詳解Django的model查詢(xún)操作與查詢(xún)性能優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)
這篇文章主要介紹了Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)隨著人工智能的日益火熱,計(jì)算機(jī)視覺(jué)領(lǐng)域發(fā)展迅速,今天就為大家?guī)?lái)最基礎(chǔ)的人臉識(shí)別基礎(chǔ),從一個(gè)個(gè)函數(shù)開(kāi)始走進(jìn)這個(gè)奧妙的世界,需要的朋友可以參考下2019-07-07
淺析關(guān)于Keras的安裝(pycharm)和初步理解
Keras 是一個(gè)用 Python 編寫(xiě)的高級(jí)神經(jīng)網(wǎng)絡(luò) API,它能夠以 TensorFlow, CNTK, 或者 Theano 作為后端運(yùn)行。這篇文章給大家介紹Keras的安裝(pycharm)和初步理解,感興趣的朋友一起看看吧2020-10-10
Python AutoCAD 系統(tǒng)設(shè)置的實(shí)現(xiàn)方法
這篇文章主要介紹了Python AutoCAD 系統(tǒng)設(shè)置的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

