Python问题:
with open(input, "rt") as f:
X = [map(float, line.split()) for line in f.readlines()[1:R]] <<problem here
X = asarray(X, dtype=float)
我有一个.txt文件,包含数字,可以是分数或浮点数。我在这里将它们作为浮点数数组读入我的代码中。但是,这仅适用于浮动数字。当您将分数添加为输入文件中的一个数字时,会发生错误。例如,我在文件中添加了1/4作为数字,我得到以下内容。
with open(input, "rt") as f:
---> X = [map(float, line.split()) for line in f.readlines()[1:R]]
X = asarray(X, dtype=float)
ValueError: invalid literal for float(): 1/4.
我该如何解决这个问题? (这样它可以读取分数和浮点数,并在读取它们时将这些分数转换为浮动)
答案 0 :(得分:4)
>>> from fractions import Fraction
>>> [float(Fraction(x)) for x in '0.25 1/4'.split()]
[0.25, 0.25]
所以你需要
X = [[float(Fraction(x)) for x in line.split()] for line in f.readlines()[1:R]]
注意:为避免制作整个文件的临时列表,最好使用
from itertools import islice
with open(input, "rt") as f:
X = [[float(Fraction(x)) for x in line.split()] for line in islice(f, 1, R)]