我有一个包含 3 列数据的 .csv 文件。我需要创建一个新的输出文件,其中包含来自原始文件第一列和第三列的一组特定数据。第三列包含十进制值,我相信在这种情况下我使用了 python 的 float() 特性。我尝试了以下代码:
in_file = open("filename.csv", "r")
out_file = open("output.csv", "w")
while True:
line = in_file.readline()
if (line == ''):
break
line = line.strip()
items = line.split(',')
gi_name = items[0]
if (gi_name.startswith("_"))
continue
p_value = float(items[2])
if (p_value > 0.05):
continue
out_file.write(','.join([gene_name, str(p_value)]))
in_file.close()
out_file.close()
当我运行上面的命令时,我收到以下错误:
错误:float() 的无效文字:0.000001
值 0.0000001 是我数据集中第三列的第一个值,我猜代码无法读取超出该集合的值,但我不确定为什么。我是 python 的新手,并不真正理解为什么会出现此错误或如何修复它。我尝试了其他关于如何输入 float() 的修改,但没有成功。有谁知道我该如何解决这个问题?
最佳答案
从您发布的内容来看,您试图传递给 float()
的字符串是否存在细微的错误并不清楚(因为它看起来完全合理)。尝试添加调试打印语句:
print(repr(items[2]))
p_value = float(items[2])
然后您可以准确地确定传递给 float()
的内容。调用 repr()
甚至可以使通常不可见的字符可见。将结果添加到您的问题中,我们将能够进一步发表评论。
关于python - float() : 0. 000001 的无效文字,如何修复错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9917294/