2014-02-12 2 views
-2

내 CSV 파일에서 최대 값과 최소값의 차이를 찾으려고하는데 위에서 언급 한 오류가 있습니다.Python - ValueError : 문자열을 부동으로 변환 할 수 없습니다.

내 코드 :

file1 = open ('fileA.csv', 'rb') 
reader1 = csv.reader(file1) 

outfile = open ('fileB.csv', 'wb') 
writer = csv.writer(outfile) 

next(reader1, None) # skip the headers 
for col in reader1: 
    Max1 = max (col[3:6],key = float) 
    Min1 = min (col[3:6], key = float) 
    Data1 = str(float(Max1) - float (Min1)) 
    print Data1 
    col.append (Data1) 
    writer.writerow (col[9]) 
    Max2 = max (col[6:9], key = float) 
    Min2 = min(col[6:9], key = float) 
    Data2 = str(float(Max2) - float(Min2)) 
    col.append (Data2) 
    writer.writerow (col[10]) 



    file1.close() 
    outfile.close() 

오류 :

Traceback (most recent call last): 
    File "C:\Python27\Percentage_methylation_variation.py", line 13, in <module> 
    Max1 = max (col[3:6],key = float) 
ValueError: could not convert string to float: 

FileA와 각 열에서 부동 소수점 숫자가 포함되어 있습니다. 이 문제와 내 코드에 대한 다른 비판에 대한 조언은 큰 도움이 될 것입니다.

감사합니다.

+0

글쎄'outfile'을 만들면'fileB' 문자열을 닫지 않고 수정하고 어떻게되는지보십시오. – Ffisegydd

+0

구문 강조에서 분명히 알 수있는 것은 fyi – keyser

+0

어떻게 입력 파일의 내용없이 진행되는지 알 수 있습니다. –

답변

2

확인하여 오류의 원인이 될 수있는 어떤 값 (당신이 빈 하나를 가질 가능성이 높습니다) -이 같은 일을 : 당신이 함께 할 의미하는지 해결해야 할 그런

for col in reader1: 
    try: 
     Max1 = max(col[3:6], key=float) 
    except ValueError: 
     print '***OOOPS***', col[3:6] 
     break 

을 유효하지 않은 값 ...

관련 문제