我正在阅读文本文件中的几列(出于某种原因由 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/