2016-04-21 48 views
0

我有困難的時候搞清楚爲什麼科學記數法字符串我傳遞到浮動()函數將無法正常工作:無效字面浮法

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

你在哪裏使用科學記數法?我沒有看到任何。注意:http://python-reference.readthedocs.org/en/latest/docs/float/scientific.html –

回答

1

0.55077+030.55077增加到03。你需要一個e爲科學記數法:

0.55077e+03 
1

float(0.55077+03)增加3.55077,然後將其轉換爲浮動(這已經是)。

請注意,這也只適用於python2.x。在python3.x,03是無效的令牌 - 把它寫有0o3正確的方式...

float('0.55077+03')不工作(並提出您所看到的錯誤),因爲這是不一個python float的有效符號。你需要:float('0.55077e03')如果你想要一種科學記數法。如果你真的想評估表達式,那麼事情會變得有點棘手。 。 。

相關問題