首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError: float()的文本无效: Timestep:

ValueError: float()的文本无效: Timestep:
EN

Stack Overflow用户
提问于 2014-07-17 02:23:33
回答 1查看 1.6K关注 0票数 0

我有一个程序可以找到一些数据,并对这些数据运行一个基本的数学函数,但是当我运行它时,我得到了以下错误:ValueError: invalid literal for float(): Timestep:。错误发生在我调用map(float,line.split()[1:])的代码行中。

有人知道为什么和如何修复这个错误吗?

代码语言:javascript
复制
#!/usr/bin/python


l=[]
with open("movie.xyz") as f:
   line = f.next()
   nat = int(line.split()[0])
   print nat
   f.next()# skip headers
   for line in f:
       if line.strip():
           l.append(map(float,line.split()[1:]))  # make all values floats   
#print l[0][0]
b = 0
a = 1
for b in range(55):
    for a in range(b+1,56):
    import operator
    import numpy as np
    #vector1 = l[b]
    vector1 = (l[b][0],l[b][1],l[b][2])
    vector2 = (l[a][0],l[a][1],l[a][2])
    #print('vector 1 = %' % vector1)
    #print('vector 1 = (%f,%f,%f)' % vector1)
    #print vector2
    x = vector1
    y = vector2
    vector3 = list(np.array(x) - np.array(y))
    #print vector3
    dotProduct = reduce( operator.add, map( operator.mul, vector3, vector3))    
    dp = dotProduct**.5
    print dp

前几行数据如下所示:

代码语言:javascript
复制
2805
Atoms. Timestep: 0
Cu 46.7176 27.1121 27.1121
Cu 43.2505 36.0618 32.4879
Cu 43.3392 36.0964 28.9236
Cu 43.2509 37.8362 27.1091
Cu 43.3406 36.0958 25.2957
Cu 43.2582 36.0629 21.737
Cu 43.2505 32.4879 36.0618
EN

回答 1

Stack Overflow用户

发布于 2014-07-17 02:45:47

插入

代码语言:javascript
复制
import pdb; pdb.set_trace()

在这一行之前,看看是什么给了你line.split()[1:]

pdb =提示调试器:https://docs.python.org/2/library/pdb.html

或者执行以下操作:

代码语言:javascript
复制
if line.strip():
    try:
        l.append(map(float,line.split()[1:]))  
    except ValueError:
        print "Value error at: ", line.split()[1:]

要使此代码正常工作,请添加以下函数:

代码语言:javascript
复制
def foo(value):
    try:
        result = float(value)
    except ValueError:
        print "cant parse %r into float" %value
        result = None
    return result

并替换该行:

代码语言:javascript
复制
l.append(map(float,line.split()[1:]))

至:

代码语言:javascript
复制
l.append(map(foo, line.split()[1:]))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24788000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档