将一些CSV元素转换为浮点Python

时间:2014-05-28 21:31:45

标签: python csv

作为一个菜鸟,我正在努力将CSV中的一列数字转换为浮点数。

测试文件如下所示:test.csv = [['a','1'],['b','2']]

我的代码:

def readLines():
    def conv(s):
        try:
            s=float(s)
        except ValueError:
            pass
        return s

    with open('C:/Users/Public/Documents/Scripts/test.csv', 'rU') as data:
        reader = csv.reader(data)
        for row in reader:
            for cell in row:
                y=conv(cell)
                print (y)

readLines()

结果如下:

a
1.0
b
2.0

但我真的只想修改数组,以便数字是浮点数,其他一切都保持不变。

此外,从我的角度来看,保持代码的顺序会更好 - 即打开文件,然后进行隐蔽。

1 个答案:

答案 0 :(得分:0)

我不确定,您希望得到什么结果,但这就是我理解的方式:您希望将CSV文件中的数据读入python数据结构,并将每行中的第二个单元转换为浮点数:

with open('C:/Users/Public/Documents/Scripts/test.csv', 'rU') as data:
    reader = csv.reader(data)
    # using list comprehension
    result = [(row[0], float(row[1])) for row in reader]

print result

输出:

[('a', 1.0), ('b', 2.0)]