2017-09-01 51 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. 

-

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

目前,要附加一個6元的元組空列表,這導致只有一個列表元件。這會導致解包錯誤,因爲Python期望有6個元素序列。你可以做的一件事是用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

相關問題