我对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日不能是浮点值。看起来您使用了数据列表中的错误数据。