Python,将列表中的所有条目从string转换为float

时间:2013-09-17 03:25:27

标签: python list types

我是Python的新手,并查找我想要做的事情的示例。我不确定这个循环有什么问题,我想做的是逐行读取一个csv文件和每一行:

  • 以逗号分割
  • 删除第一个条目(名称)并将其存储为name
  • 将所有其他条目转换为浮动
  • 在我的name
  • 中存储Community和浮动条目

这就是我现在正在尝试的事情:

class Community:
    num = 0
    def __init__(self, inName, inVertices):
        self.name = inName
        self.vertices = inVertices
        Community.num += 1

allCommunities = []
f = open("communityAreas.csv")
for i, line in enumerate(f):
    entries = line.split(',')
    name = entries.pop(0)
    for j, vertex in entries: entries[j] = float(vertex)

    print name+", "+entries[0]+", "+str(type(entries[0]))

    allCommunities.append(Community(name, entries))
f.close()

我得到的错误是:

>>>>> PYTHON ERROR!!! Traceback (most recent call last):
  File "alexChicago.py", line 86, in <module>
    for j, vertex in entries: entries[j] = float(vertex)
ValueError: too many values to unpack

值得指出的是,这是在omegalib中运行的,omegalib是一个可视化集群的库,可以在C中运行并解释Python。

3 个答案:

答案 0 :(得分:2)

我想你忘记了第86行的enumerate()功能;应该是

for j, vertex in enumerate(entries): entries[j] = float(vertex)

答案 1 :(得分:1)

如果总是有一个名称,然后是一个可变数量的浮点值,听起来你需要拆分两次:第一次使用maxsplit为1,另一次使用尽可能多次。例如:

name, float_values = line.split(',',1)
float_values = [float(x) for x in float_values.split(',')]

答案 2 :(得分:1)

我可能不完全确定你想要在这里实现什么,但是将entries中的所有元素转换为float,这不应该足够吗?:第86行:

entries=map(float, entries)