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)文章希望大家以后多多支持腳本之家!
- 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 Numpy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差詳解
NumPy(Numerical Python)是Python的一種開源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下2021-11-11PyTorch模型轉(zhuǎn)換為ONNX格式實(shí)現(xiàn)過程詳解
這篇文章主要為大家介紹了PyTorch模型轉(zhuǎn)換為ONNX格式實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04python 使用遞歸的方式實(shí)現(xiàn)語義圖片分割功能
這篇文章主要介紹了python 使用遞歸的方式實(shí)現(xiàn)語義圖片分割,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Python實(shí)現(xiàn)葵花8號(hào)衛(wèi)星數(shù)據(jù)自動(dòng)下載實(shí)例
這篇文章主要為大家介紹了Python實(shí)現(xiàn)葵花8號(hào)衛(wèi)星數(shù)據(jù)自動(dòng)下載實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Python3 串口接收與發(fā)送16進(jìn)制數(shù)據(jù)包的實(shí)例
今天小編就為大家分享一篇Python3 串口接收與發(fā)送16進(jìn)制數(shù)據(jù)包的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06Dephi逆向工具Dede導(dǎo)出函數(shù)名MAP導(dǎo)入到IDA中的實(shí)現(xiàn)方法
這篇文章主要介紹了Dephi逆向工具Dede導(dǎo)出函數(shù)名MAP導(dǎo)入到IDA中,通過這個(gè)腳本,我們就可以把專業(yè)dephi程序分析的結(jié)果,轉(zhuǎn)移到IDA專業(yè)逆向代碼分析的平臺(tái),實(shí)現(xiàn)聯(lián)動(dòng),需要的朋友可以參考下2022-08-08