我正在努力弄清楚为什么我传入float()函数的科学记号字符串不起作用:
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 :(得分:1)
0.55077+03
已将0.55077
添加到03
。科学记数法需要e
:
0.55077e+03
答案 1 :(得分:1)
float(0.55077+03)
将3
添加到.55077
,然后将其转换为浮动(已经是)。
请注意,这也仅适用于python2.x。在python3.x上,03
是一个无效的令牌 - 正确的写入方式是0o3
...
float('0.55077+03')
无法正常工作(并引发您所看到的错误),因为它不是python float的有效表示法。如果你想要某种科学记数法,你需要:float('0.55077e03')
。如果你真的想要评估表达式,那么事情会变得有点棘手。 。