2013-12-16 32 views
1

每當我試着重裝我dictionary.DB文件,它不斷告訴我:Dictionary.py值過多解壓

too many values to unpack (expected 4) 

但也有4個值我使用word, name, definition, wordtime。工作時間只是time.time()。這是DEF負載代碼:

def load(): 
    dWord = {} 
    for word in open("Dictionary.DB", "r").readlines(): 
     if len(word.strip()) >0: 
     word, name, definition, wordtime = word.split() 
     dWord[word] = name, definition, int(wordtime) 
    Dictionary.dWord = dWord 

# Adding words to DB 
Dictionary.dWord[word] = user, definition, wordtime 

實施例:

{'dog': ('charles', 'a animal', 1387199008)} 

和印刷word.split()時,這是結果:

['dog', 'charles', 'a', 'animal', '1387199870'] 
+4

如果什麼有空格,說,定義? – user2357112

+2

看起來您可能會從word.split()語句接收太多值。超過4 – Totem

+0

使用'print word.split()'看看你正在得到什麼,你期待什麼 – adil

回答

0

你可以這樣做:

raw = word.split() 
word, name, definition, wordtime = raw[0], raw[1], ' '.join(raw[2:-1]), raw[-1] 

如果你確定空間只出現在definition

這適用於較長的不同數量的空格:

word = 'dog charles a cute cute animal 1387199870' 
# definition -> 'a cute cute animal' 
+0

是的,只有空格在定義中。 – user3103923

+0

它的工作原理。非常感謝Ray的幫助。 – user3103923

+0

歡迎!我的榮幸。 – Ray

0

好像線:

word, name, definition, wordtime = word.split() 

是親blem。檢查什麼word.split()正在返回。根據您發佈的錯誤,它必須返回四個以上的值。也許一些空的字符串。

+0

呃如何讓機器人打印word.split()而不會出錯? – user3103923

+0

這個錯誤是因爲你試圖把word.split()的結果放到word中,名稱,定義和wordtime,這些是四個值,只需在該行之前添加print(word.split())以便發送以輸出word.split()的結果或使用調試器;) –

+0

['dog ','查爾斯','a','動物','1387199870'] – user3103923

相關問題