Python:ValueError:float()的文字无效:



我对python真的很陌生。所以,也许我的问题真的很基本。。。对于我的工作,我在一段时间内检查不同的参数。对于"从Python开始",我想绘制一个简单的列表,其中包含一个月的每日测量温度值。在列表中,我有三个类似以下结构的拆分:

天-TAB-温度-TAB-Nr

我的代码:

import pylab as pl
import numpy as np
filename = "u_netCDF_write"
file = open(filename)
NoOfValues = 31                                                      
counter=0
data = []              
for line in file:                                                     
    if counter <= NoOfValues:                                          
         data.append(line.strip('n').strip('t').split(' '))            
         if len(data[-1]) == 4:                                         
            data[-1].pop(3)                                             
    counter+=1                                                          
x = np.linspace(0,30,31)                                                
data = np.transpose(data)                                             
for i in range(len(data[2])):                                           
   data[2][i] = float(data[2][i])-273.15

当我试图绘制每日温度图时,我会收到错误消息:

Traceback (most recent call last):
  File ".../.../unetCDFplot.py", line 43, in <module>
    data[2][i] = float(data[2][i])-273.15   
ValueError: invalid literal for float(): 03.07.2014

看起来代码没有转换数据。为什么会这样?有人能帮我吗?谢谢

我解决了我的问题!因此,对于任何有同样问题的人来说,以下是我所做的:我使用了

print(repr(data))

(感谢Stephany Dionysio)检查了我代码中的每一步,并明白问题不在于转置函数,而是每一行中的空格。在尝试了不同的方法来删除空格后,我发现我无法删除由"data.append"引起的数组中的数组。为了获得我需要的值,我在append方法中使用了pop():

data.append(line.strip('n').strip('t').split(' ').pop(7))  

现在我的代码运行良好。谢谢你的好建议,他们让我走上了正确的道路!:)

我不知道你的"u_netCDF_write"文件的内容,所以调试它相当困难。但正如另一篇文章所示,它可能是值中存在的非打印字符。

看看这是否有帮助python ValueError:float()的文本无效

2014年7月3日不能是浮点值。看起来您使用了数据列表中的错误数据。

相关内容

最新更新