我是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。
答案 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)