float()的文字无效:python中的''1'错误

时间:2014-11-06 11:18:24

标签: python file som uci

代码

    for i in range(num):
           # for j in range(4):
              lines = outf1.readline()
              brr[i]= list(map(float, lines.split()))

这是我的输入数据集

['1', '1.52101', '13.64', '4.49', '1.1', '71.78', '0.06', '8.75', '0', '0', '1']
['2', '1.51761', '13.89', '3.6', '1.36', '72.73', '0.48', '7.83', '0', '0', '1']
['3', '1.51618', '13.53', '3.55', '1.54', '72.99', '0.39', '7.78', '0', '0', '1']

我正在使用SOM算法。我有一个包含4或5个十进制值的浮点值的文件。我需要检索这些值并存储到数组。

2 个答案:

答案 0 :(得分:1)

ast.literal_eval()应该这样做:

In [12]: line = "['1', '1.52101', '13.64', '4.49', '1.1', '71.78', '0.06', '8.75', '0', '0', '1']"

In [13]: map(float, ast.literal_eval(line))
Out[13]: [1.0, 1.52101, 13.64, 4.49, 1.1, 71.78, 0.06, 8.75, 0.0, 0.0, 1.0]

答案 1 :(得分:0)

你似乎正在向split提供一条以['1'开头的行,所以当然这个方形的问题会成为一个问题。

快速解决方法是每行只strip(以确保没有空格),然后删除第一个和最后一个字符以摆脱括号。