1

私はPythonが初めてで、やりたいことの例を探しています。このループの何が問題なのかわかりません。私がやりたいのは、csv ファイルを 1 行ずつ、各行ごとに読み取ることです。

  • カンマ区切り
  • 最初のエントリ (名前) を削除し、次のように保存します。name
  • 他のすべてのエントリを float に変換します
  • 私のクラスのストア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

これは、C で実行され、Python を解釈するビジュアル クラスターのライブラリである omegalib で実行されていることを指摘する価値があるかもしれません。

4

3 に答える 3

2

enumerate()86行目の関数を忘れたと思います。する必要があります

for j, vertex in enumerate(entries): entries[j] = float(vertex)
于 2013-09-17T03:30:02.433 に答える
1

常に名前があり、可変数の float 値がある場合は、2 回分割する必要があるように思えます。1 回目は maxsplit を 1 に設定し、もう 1 回はできるだけ多く分割します。例:

name, float_values = line.split(',',1)
float_values = [float(x) for x in float_values.split(',')]
于 2013-09-17T03:30:22.420 に答える