2017-09-01 8 views
0

このコードの目的は、year_linktla_2と出力変数from_, to, digit, name2, min_value, max_valueと一致させることです。私はCSVファイルを使用しています。データはそこから読み込まれます。ここに掲載されていますExcel Sheet残念ながら、私はこのエラーが表示されます。ValueErrors:アンパックするには3つ以上の値が必要

Traceback (most recent call last): 
File "C:/Users/RM/Desktop/win6.py", line 150, in <module> 
for from_,to,digit,name2,min_value,max_value in voltage_envelopes[tla_2]: 
ValueError: need more than 3 values to unpack. 

- 現在、あなただけの1のリストになり、空のリストに6要素のタプルを追加している

data = list(csv.reader(open(LOAD_GEN_DATAFILE))) 
year = raw_input(" ") 
location=raw_input(" ") 
for row in data: 
    year_link, from_,to,digit,name2,tla_2,min_value,max_value,last_bus = row[7:16] 
    year_link = year 
    tla_2=location 
    if year_link not in mydict: 
     mydict[year_link]={} 

    voltage_envelopes=mydict[year_link] 

    if tla_2 not in voltage_envelopes: 
     voltage_envelopes[tla_2]=[] 

    voltage_envelopes[tla_2].append((from_,to,digit,name2,min_value,max_value)) 

if year_link in mydict and tla_2 in mydict[year_link]: 
    voltage_envelopes=mydict[year_link] 

    for from_,to,digit,name2,min_value,max_value in voltage_envelopes[tla_2]: 
     from_=int(from_) 
     to=int(to) 
     min_value=float(min_value) 
     max_value=float(max_value) 
     digit=int(digit) 

     output = 'From Bus #: {}\tTo Bus #: {}\t Area Station: {}\t VMIN: {} pu\tVMAX: {} pu\t' 
     print(output.format(from_, to,name2, min_value, max_value)) 
     print("\n") 

     #_c=psspy.getdefaultchar() 
     #_i=psspy.getdefaultint() 
     #_f=psspy.getdefaultreal() 
     #psspy.two_winding_chng_4(from_,to,'%d'% digit,[_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f, max_value, min_value,_f,_f,_f],[]) 
else: 
    exit 

答えて

0

素子。これは、Pythonが6要素シーケンスを期待しているので、アンパックエラーになります。あなたができることの1つは、6つの要素の別のリストでリストを拡張することです。

変更

voltage_envelopes[tla_2].append((from_,to,digit,name2,min_value,max_value))

予想通り

voltage_envelopes[tla_2].extend([from_,to,digit,name2,min_value,max_value])

+0

私は同じ結果 –

+0

を受け他のアイデア –

+0

いくつかのデータをCSVファイルとして提供できますか? –

0

Question: ValueError: need more than 3 values to unpack.

にあなたの例のコードが動作している、いないとValueError

voltage_envelopes[tla_2]. 
    append((from_,to,digit,name2,min_value,max_value)) 
... 
     for from_,to,digit,name2,min_value,max_value in voltage_envelopes[tla_2]: 

私が示したトレースバックが質問に示す例コードからではないと仮定します。
あなたのコードを調べるには、あなたが値を値を代入し、解凍などのエラーを取得することは不可能です!

 #for from_, to, digit, name2, min_value, max_value in voltage_envelopes[tla_2]: 
     for voltage in voltage_envelopes[tla_2]: 
      if len(voltage) == 6: 
       from_, to, digit, name2, min_value, max_value = voltage 
       ... 
      else: 
       print('[FAIL] Missing Data in "voltage"! Got {} values={} need 6 values!'.format(len(voltage), voltage)) 

は、Pythonでテスト:


変更キャッチデータのエラーを起こしやすいラインに次の3.4.2