python - 将科学记数法中的 str 转换为 Float 仅在 Python 中的正数上失败

标签 python

我正在阅读文本文件中的几列(出于某种原因由 3 个空格分隔)

列采用科学记数法。第一列混合了正数和负数。

在这个片段中转换为 float 时:

    count = 0
    curfile = open(curFile, "r")    
    for row in curfile.readlines():
       if count > (row_first-1) and count < row_last:
           line = row.split('   ')
           x.append(float(line[0]))
          print line[0]
           y.append(float(line[1]))
           count = count + 1
       else:
           count = count + 1

第一列从负数行切换到正数行时失败

-3.0000000E+00   5.5100000E+02   2.6600000E+02   0.0000000E+00   
-1.0000000E+00   5.5100000E+02   2.6600000E+02   0.0000000E+00   
 1.0000000E+00   5.5100000E+02   2.6600000E+02   0.0000000E+00   

所以在这种情况下,它将成功转换 -1(第二行)而不是 1(第三行)。 当向 Y 附加全部为正的值时,不会发生此问题。

我想可能在正数之前有一个空格 “-”符号是,但在字符串上使用 lstrip() 没有帮助。

我对这个问题感到非常困惑,如果有任何想法,我将不胜感激。

编辑:运行程序时抛出的异常:

Traceback (most recent call last):
  File "U:\scripts\flow3d_script\flow_3d.py", line 93, in <module>
    x.append(float(line[0]))
ValueError: could not convert string to float: 

最佳答案

这主要是猜测,但是......

负数行的开头也可以有三个空格吗?这将导致 split 返回一个开头为空字符串的列表。

要解决这个问题,您应该在拆分之前lstrip() 整行。顺便说一下,如果您只是执行不带参数的 split(),它默认为“按任意数量的空格拆分”,因此您不必担心空格的数量。

关于python - 将科学记数法中的 str 转换为 Float 仅在 Python 中的正数上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249191/

相关文章:

python - 具有两种不同颜色的行背景的 QListView

python - Twisted reactor 获取当前状态

python - 如何使用 3d 箭袋获得相同颜色的箭头轴和箭头头

python - 使用线程同时写入多个 CSV 文件

python - Jinja2 默认页面标题

python - IronPython 与 Python .NET

python - 删除行(即用 NaN 填充)并在 Pandas Dataframe 中进行插值

javascript - javascript中的 "has_key"相当于什么?

python - 值错误 : negative number cannot be raised to a fractional power

python - 如何将字符串与python枚举进行比较?