2016-04-21 4 views
0

Я имею трудное время выяснить, почему научная нотацию строки я передаю в поплавок() функция не будет работать:Invalid буквальных для поплавка

time = [] 
WatBalR = [] 
Area = np.empty([1,len(time)]) 
Volume = np.empty([1,len(time)]) 
searchfile = open("C:\GradSchool\Research\Caselton\Hydrus2d3d\H3D2_profile1v3\Balance.out", "r") 
for line in searchfile: 
    if "Time" in line: 
     time.append(re.sub("[^0-9.]", "", line)) 
    elif "WatBalR" in line: 
     WatBalR.append(re.sub("[^0-9.]", "", line)) 
    elif "Area" in line: 
     Area0 = re.sub("[^0-9.\+]", "", line) 
     print repr(Area0[:-10]) 
     Area0 = float(Area0[:-10].replace("'", "")) 
     Area = numpy.append(Area, Area0) 
    elif "Volume" in line: 
     Volume0 = re.sub("[^0-9.\+]", "", line) 
     Volume0 = float(Volume0[:-10].replace("'", "")) 
     Volume = numpy.append(Volume, Volume0) 
searchfile.close() 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-80-341de12bbc94> in <module>() 
    13   Area0 = re.sub("[^0-9.\+]", "", line) 
    14   print repr(Area0[:-10]) 
---> 15   Area0 = float(Area0[:-10].replace("'", "")) 
    16   Area = numpy.append(Area, Area0) 
    17  elif "Volume" in line: 
    ValueError: invalid literal for float(): 0.55077+03 

Однако следующие работы:

float(0.55077+03) 
3.55077 

Если я помещаю кавычки вокруг аргумента, появляется тот же самый неверный литерал, но я пытаюсь удалить цитаты из строки и не могу этого сделать.

+0

Где вы пользуетесь научной нотацией? Я не вижу. NB: http://python-reference.readthedocs.org/ru/latest/docs/float/scientific.html –

ответ

1

0.55077+03 является 0.55077 добавлен в 03. Вам нужно e для научной нотации:

0.55077e+03 
1

float(0.55077+03) добавляет 3 к .55077, а затем преобразует его в поплавка (которая уже есть).

Обратите внимание, что это также работает только на python2.x. На python3.x, 03 является недействительным маркер - правильный способ написать это есть 0o3 ...

float('0.55077+03') не работает (и вызывает ошибку, что вы видите), потому что это не допустимая нотация для float python. Вам нужно: float('0.55077e03'), если вы идете на научную нотацию. Если вы действительно хотите оценить выражение, тогда все становится немного сложнее. , ,

Смежные вопросы