Разбор строки, представляющей число с плавающей запятой * с показателем степени * в Python - PullRequest
6 голосов
/ 13 мая 2010

У меня большой файл с числами в виде 6,52353753563E-7. Так что в этой строке есть показатель степени. float() умирает от этого.

Хотя я мог бы написать собственный код для предварительной обработки строки во что-то, что может float() съесть, я ищу питонский способ преобразования их в число с плавающей точкой (что-то вроде строки формата, переданной где-то). Должен сказать, что я удивлен float() не может обработать строки с таким показателем, это довольно распространенная вещь.

Я использую Python 2.6, но при необходимости можно использовать 3.1.

Ответы [ 2 ]

13 голосов
/ 13 мая 2010

Ничего общего с показателем. Проблема в запятой вместо десятичной точки.

>>> float("6,52353753563E-7")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 6,52353753563E-7
>>> float("6.52353753563E-7")
6.5235375356299998e-07

Общий подход см. locale.atof ()

1 голос
/ 13 мая 2010

Ваша проблема не в показателе степени, а в запятой. с питоном 3.1:

>>> a = "6.52353753563E-7"
>>> float(a)
6.52353753563e-07
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...