我是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])
非常感谢任何帮助。
谢谢!
答案 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]]