2016-07-09 53 views
1

相同的錯誤已經被重複不斷地:(字典更新序列元素#10的長度爲0; 2需要

代碼:

def query(): 
    query = input("Please insert your query here:\n") 
    with open("TroubleShootingKey.txt") as f: 
     dictq = dict(x.rstrip().split(None, 1)for x in f) 
     print(dictq) 
     found =False 
     for k, v in dictq.items(): 
      if k in query: 
       found = True 
       print(v) 

     if not found: 
      print("sorry, we didn't get that") 

query() 

...

這是語法錯誤:

Traceback (most recent call last): 
    File "C:/Documents and Settings/Naoman/Desktop/Naoman's Work/Computer Science/CA Final week/CA.6.py", line 42, in <module> 
    query() 
    File "C:/Documents and Settings/Naoman/Desktop/Naoman's Work/Computer Science/CA Final week/CA.6.py", line 31, in query 
    dictq = dict(x.rstrip().split(None, 1)for x in f) 
ValueError: dictionary update sequence element #10 has length 0; 2 is required 

...

這是文件打開(記事本):

接通充電它

體積變化它的聲音/正常模式

相機中取出材料阻擋透鏡

水Aloow電話乾燥

過熱允許電話冷卻在涼爽的環境中下降

internet這是因爲您不在覆蓋區域,請嘗試更改您的位置以捕捉信號

無線網絡有兩種方法來解決這個問題,首先刪除數據我

存儲好,你能夠冷靜下來在涼爽的環境

凍結取出電池,並把它回重啓手機

軟件不幸的是,解決這個問題的唯一方法就是重置手機

+2

伊克,*請*不要使用全局和局部變量同名。 – o11c

+0

如果你使用'split(,1)'這通常意味着你*真的想要'.partition()',這可以避免你的錯誤。 – o11c

+0

不要編輯「解決」到你的問題 - 你標記的東西解決接受一個答案,即。點擊它旁邊的複選框。如果其他人發佈的答案都沒有幫助,請添加您自己的答案。(作爲問答知識庫的一部分,而不是討論板,是我們試圖評估和改進問題和答案;如果您將所選答案編輯到問題中,即使在標題中,該問題也不再獨立於回答,消除社區表達自己偏好的能力:與提問的人分開回答)。 –

回答

0

那是因爲你達到了文件的末尾可能是。

你可以在你的代碼中添加

try: 
    ... 
except ValueError: 
    ... 

塊到剛剛在這種情況下(與break)停止。

0

split(None, 1)對一個空字符串將返回一個空列表,這可能是此錯誤的原因。你可以重現錯誤與下面的代碼片段:

dict(x.split(None, 1) for x in ['']) 

一個潛在的解決方法是避免在空行調用split()

dict(x.rstrip().split(None, 1) for x in f if x) 
相關問題