Проблемы с преобразованием строк в плавающий из inputfile - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь заполнить некоторые плавающие значения из файла в кортеж со следующим кодом Python:

with open(filename, 'r') as file:

    i=0
    lines = file.readlines()            
    for line in lines:
        if (line != None) and (i != 0) and (i != 1):        #ignore first 2 lines
            splitted = line.split(";")

            s = splitted[3].replace(",",".")

            lp1.heating_list[i-2] = float(s)    
         i+=1   

Значения берутся из .csv-файла, где строки выглядят так:

MFH;0:15;0,007687511;0,013816233;0,023092447;

Проблема в том, что я получаю:

lp1.heating_list[i-2] = float(s)

ValueError: could not convert string to float: 

И я понятия не имею, что не так. Пожалуйста, просветите меня.

Ответы [ 2 ]

0 голосов
/ 03 мая 2018
from io import StringIO

txt = """ligne1
ligne2
MFH;0:15;0,007687511;0,013816233;0,023092447;
MFH;0:15;0,007687511;0,013816233;0,023092447;
MFH;0:15;0,007687511;0,013816233;0,023092447;
MFH;0:15;0,007687511;0,013816233;0,023092447;
"""

lp1_heating = {}

with StringIO(txt) as file:
    lines = file.readlines()[2:] # ignore first 2 lines 
    for i, line in enumerate(lines):            
            splitted = line.split(";")            
            s = splitted[3].replace(",",".")
            lp1_heating[i] = float(s)  

print(lp1_heating )
{0: 0.013816233, 1: 0.013816233, 2: 0.013816233, 3: 0.013816233}
0 голосов
/ 03 мая 2018

Это, вероятно, означает, что говорит. Ваша переменная s является строкой, которая не является плавающей точкой. Вы можете попробовать добавить этот фрагмент, чтобы напечатать / найти проблемную строку.

try:
    lp1.heating_list[i-2] = float(s) 
except ValueError:
    print("tried to convert {} on line {}".format(s, i))

См. Также похожий вопрос: https://stackoverflow.com/a/8420179/4295853

...