循环嵌套列表 - 从字符串转换为浮点数

时间:2011-10-06 16:30:10

标签: python

我是Python新手,如果这看起来非常简单,请道歉:

我有一个包含4列和十几行的csv文件。我将竞赛作为列表(列表列表)导入,内容以字符串形式出现。我想要做的是遍历列表(可以是可变数量的行)并将索引2字符串转换为浮点数。我运行以下代码,但是当我打印列表时,一切仍然是一个字符串:

import csv

def main():
    benchmark = list(csv.reader(open('test.csv', 'r')))

    for i in range((len(benchmark))):
        benchmark[i][2] = float(benchmark[i][2])

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

没有必要将csv.reader强制转换为列表,因为它已经可以迭代。您可以执行以下操作:

benchmark=[]
with open('test.csv','r') as inp:
    csvin=csv.reader(inp)
    for row in csvin:
        benchmark.append(row[:1] + [float(row[1])] + row[2:])

答案 1 :(得分:0)

这可能会有效,但如果没有测试数据我就无法测试。

>>> benchmark = [[1, 2, 3, 4], [5, 6, 7, 8]]
>>> [[float(col) if i == 2 else col for i, col in enumerate(row)] for row in benchmark]
[[1, 2, 3.0, 4], [5, 6, 7.0, 8]]