Python:值错误:无效的文本格式转换成浮点数():

3

我是一名新手,对于Python的使用非常陌生。所以我的问题可能非常基础... 在我的工作中,我需要在一段时间内检查不同的参数。在开始学习Python时,我想要绘制一个简单的列表,该列表包含了一个月内每天测量的温度值。在列表中,我有三个拆分项,如下所示:

日期 -TAB- 温度 -TAB- 数量

我的代码:

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

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


看起来Python试图将日期解释为浮点小数,这当然行不通,因为它是一个日期,而不是一个数字。 - n1c9
1
请展示您的数据。 - Tomasz Jakub Rup
好问题!@elly - Liam
3个回答

3
我解决了我的问题!所以,对于任何遇到同样问题的人,这是我所做的:我使用了


print(repr(data))

感谢Stephany Dionysio的帮助,她检查了我的代码的每一步,并理解了问题不是转置函数,而是每行中的空格。尝试了不同的方法删除空格后,我发现由于“data.append”导致无法删除数组中的数组。为了获取所需的值,我在append方法中使用了pop()函数:
data.append(line.strip('\n').strip('\t').split(' ').pop(7))  

现在我的代码运行良好。谢谢您的建议,它们把我带到了正确的方向! :)

2

我不知道你的 "u_netCDF_write" 文件的内容,所以很难调试它。但是正如其他帖子所示,可能存在一个非打印字符在值中。

看看这个是否有帮助 python ValueError: invalid literal for float()


0

03.07.2014 不能是浮点数。看起来你正在使用数据列表中的错误数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接