TypeError: 'float' object is not subscriptable 에러 해결방법

4주 전 질문 4주 전 토론 11 views

텍스트에 있는 데이터의 세 줄마다 평균값을 계산하려고 합니다.

텍스트 내용 및 형식은 아래에 나와 있습니다.

col2 0.8706781511585587
col3 0.8781303616921717
col4 0.9750610907956535
col5 0.8173341883156271
col6 0.8251156825704927
col7 0.9717335921387844
col8 0.8588412679156341
col9 0.8584079998613542
col10    0.9994454168905218
col11    0.779847836259337
col12    0.8211296164711184
col13    0.8471776918944213
col14    0.7776295038214243
col15    0.7964853295436821
col16    0.8513024037711652
col17    0.7580284570458051
col18    0.8333651063239805
col19    0.8280272438952531
col20    0.705100431534982
col21    0.8970728410252855
col22    0.7650993916916518

 

에러가 나는데 에러는 다음과 같습니다.

Traceback (most recent call last):
  File "/home/test.py", line 7, in <module>
    lines = sum(lines[i:i+3])/3
TypeError: 'float' object is not subscriptable

with open('/home/data.txt', 'r') as f:
    lines = f.readlines()
    lines = [line.strip().split('\t') for line in lines]
    lines = [line[1] for line in lines]
    lines = [float(line) for line in lines]    
    for i in range(0, len(lines), 3):
        lines = sum(lines[i:i+3])/3
        with open('/home/data.txt', 'a') as f:
            f.write('{}\t{}\n'.format('average', lines))

 

뭘 수정하면 될까요? 

python

2022-05-24 11:54

1개의 해답

코드를 보면 for loop안에 있는 lines = sum(lines[i:i+3])/3가 lines 변수를 덮어씁니다.

두 번째 반복 동안 lines은 float이므로 lines[i:i+3]을 실행하려고 하면 에러가 발생합니다

(다시 말해 1.23[0:3]은 실행할 수 없습니다).

이 문제를 해결하려면 lines 이외의 변수 이름을 사용하세요.

아래에서 변수 이름을 average로 변경했습니다.

for i in range(0, len(lines), 3):
    average = sum(lines[i:i+3])/3
    with open('/home/data/NB_accuracy_score.txt', 'a') as f:
        f.write('{}\t{}\n'.format('average', average))


2022-05-24 11:58

해결방법이나 팁을 알고 계신다면


© 2022 pinfo. All rights reserved.