2010-05-12 1 views
6

숫자가 큰 파일이 6,52353753563E-7인데, 그래서 그 문자열에는 지수가 있습니다. float()이 사망합니다.파이썬에서 float *를 나타내는 문자열을 지수로 해석하는 경우

문자열을 사전 처리하기 위해 float()으로 문자열을 처리 할 수 ​​있지만, 이것을 float (어딘가에 전달 된 형식 문자열과 같은 것)으로 변환하는 파이썬 방법을 찾고 있습니다. 나는 놀랍다는 것을 말해야한다. float()은 그러한 지수를 가진 문자열을 처리 할 수 ​​없다. 이것은 꽤 흔한 물건이다.

저는 파이썬 2.6을 사용하고 있지만 필요하다면 3.1을 사용할 수 있습니다.

답변

13

지수와 관련이 없습니다. 문제는 소수점 대신 쉼표입니다.

>>> 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()

+0

수정하십시오. 덧붙여 말하자면, 파이썬 프롬프트에 "6,52353753563E-7"을 입력하면 튜플 (6, 5235.3753563)으로 파싱됩니다. –

+0

아, 고마워. 타이머를 사용하면 허용 된 것으로 표시됩니다. – Lucas

+0

관련 메모에서 어떻게 든 파이썬이 쉼표를 인식하게 할 수 있습니까? C#과 Java는 이것을 할 수 있습니다. 전 세계의 많은 곳에서 쉼표를 소수 구분 기호로 사용합니다. – Lucas

1

귀하의 문제는 지수에 있지만 쉼표가 아닌 참조하십시오. with python 3.1 :

>>> a = "6.52353753563E-7" 
>>> float(a) 
6.52353753563e-07 
관련 문제