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í)說,看了一些博客,但是并沒有直接找到解決辦法,但是從中獲得了一些想法,對問題理解更清楚一點(diǎn)。下面是找到的一種解釋:

然后說一下我的具體應(yīng)用:
我需要從預(yù)測生成的 json文件獲取預(yù)測分?jǐn)?shù)score和預(yù)測位置(坐標(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中報(bào)錯(cuò) “TypeError: ‘list‘ object is not callable”問題及解決
- Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法
- Python開發(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問題
相關(guān)文章
對python 多線程中的守護(hù)線程與join的用法詳解
今天小編就為大家分享一篇對python 多線程中的守護(hù)線程與join的用法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
詳解Django的model查詢操作與查詢性能優(yōu)化
這篇文章主要介紹了詳解Django的model查詢操作與查詢性能優(yōu)化,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
Python基于Opencv來快速實(shí)現(xiàn)人臉識(shí)別過程詳解(完整版)
這篇文章主要介紹了Python基于Opencv來快速實(shí)現(xiàn)人臉識(shí)別過程詳解(完整版)隨著人工智能的日益火熱,計(jì)算機(jī)視覺領(lǐng)域發(fā)展迅速,今天就為大家?guī)碜罨A(chǔ)的人臉識(shí)別基礎(chǔ),從一個(gè)個(gè)函數(shù)開始走進(jìn)這個(gè)奧妙的世界,需要的朋友可以參考下2019-07-07
淺析關(guān)于Keras的安裝(pycharm)和初步理解
Keras 是一個(gè)用 Python 編寫的高級(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)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

