Python csv列表类型错误:无法使用灵活类型执行reduce

Python csv列表类型错误:无法使用灵活类型执行reduce,python,Python,我正在尝试获取类似以下内容的test.csv文件: hr、mime、活动 100,0.41,1 101,0.19,1 102,0.18,1 103,0.6,1 104,0.45,1 105,0.7,1 90,0.4,1 72.43,0.17,1 73,0.17,1 110,0.5,1 120,1,1 130,2,1 72.19,0.5,1 72.68,0.5,1 看起来像这样: data = ((100, 0.4, 1), (101, 0.19, 1), (102, 0.18, 1), (103

我正在尝试获取类似以下内容的test.csv文件:
hr、mime、活动
100,0.41,1
101,0.19,1
102,0.18,1
103,0.6,1
104,0.45,1
105,0.7,1
90,0.4,1
72.43,0.17,1
73,0.17,1
110,0.5,1
120,1,1
130,2,1
72.19,0.5,1
72.68,0.5,1

看起来像这样:

data = ((100, 0.4, 1), (101, 0.19, 1), (102, 0.18, 1), (103, 0.4, 1),
        (104, 0.4, 1), (105, 0.4, 1), (90, 0.4, 1), (72.43, 0.17, 1),
        (73, 0.17, 1), (110, 0.5, 1), (120, 0.17, 1), (130, 0.18, 1),
        (72.19, 0.5, 1), (72.68, 0.5, 1))
[('hr', 'mime', 'active'), ('100', '0.41', '1'), ('101', '0.19', '1'), ('102', '0.18', '1'), ('103', '0.6', '1'), ('104', '0.45', '1'), ('105', '0.7', '1'), ('90', '0.4', '1'), ('72.43', '0.17', '1'), ('73', '0.17', '1'), ('110', '0.5', '1'), ('120', '1', '1'), ('130', '2', '1'), ('72.19', '0.5', '1'), ('72.68', '0.5', '1')]
我尝试了以下方法:

import csv
with open('test.csv', 'rb') as f:
    reader = csv.reader(f)
    data = map(tuple, reader)
但当它被打印出来时,看起来是这样的:

data = ((100, 0.4, 1), (101, 0.19, 1), (102, 0.18, 1), (103, 0.4, 1),
        (104, 0.4, 1), (105, 0.4, 1), (90, 0.4, 1), (72.43, 0.17, 1),
        (73, 0.17, 1), (110, 0.5, 1), (120, 0.17, 1), (130, 0.18, 1),
        (72.19, 0.5, 1), (72.68, 0.5, 1))
[('hr', 'mime', 'active'), ('100', '0.41', '1'), ('101', '0.19', '1'), ('102', '0.18', '1'), ('103', '0.6', '1'), ('104', '0.45', '1'), ('105', '0.7', '1'), ('90', '0.4', '1'), ('72.43', '0.17', '1'), ('73', '0.17', '1'), ('110', '0.5', '1'), ('120', '1', '1'), ('130', '2', '1'), ('72.19', '0.5', '1'), ('72.68', '0.5', '1')]
此外,当我尝试使用hr运行某些代码时,我会出现以下错误:

TypeError: cannot perform reduce with flexible type
我做错了什么?

这应该可以:

import csv

def convert(line):
    return tuple(map(float, line))

with open('test.csv', 'rb') as f:
    reader = tuple(csv.reader(f))[1:]
    data = tuple(map(convert, reader))

[('100 0.41 1',),('101 0.19 1',),…如何将元组中的元素用逗号分隔?正如在csv文件中一样,它用空格分隔。csv文件用逗号分隔,原始示例用空格显示csv示例。在您的输出中,用逗号更新示例,您不希望看到('hr','mime','active'))元组?是的,我不希望('hr','mime','active')显示为:((100,0.4,1),(101,0.19,1),(102,0.18,1),(103,0.4,1),(104,0.4,1),(105,0.4,1),(90,0.4,1),(72.43,0.17,1),(110,0.5,1),(120,0.17,1),(130,0.18,1),(72.19,0.5,1),(72.68,0.5,1))谢谢你的回答:(('100', '0.41', '1'), ('101', '0.19', '1'), ('102', '0.18', '1'), ('103', '0.6', '1'), ('104', '0.45', '1'), ('105', '0.7', '1'), ('90', '0.4', '1'), ('72.43', '0.17', '1'), ('73', '0.17', '1'), ('110', '0.5', '1'), ('120', '1', '1'), ('130', '2', '1'), ('72.19', '0.5', '1'), ('72.68', '0.5', '1'))我不希望撇号显示在数字之间。它应该显示为:((100,0.4,1),(101,0.19,1),(102,0.18,1),(103,0.4,1),(104,0.4,1)…等等。它必须经过编辑。它不能完全满足您的要求,因为您希望浮点数不显示.0。