我有以下代碼:字典KeyError異常
def search_for_person(name):
with open("address.txt", "r") as book:
records = re.split("[-]+", book.read(), re.M)
for data in records:
record = get_record(data)
if record['Name'] == name:
print record
def get_record(string):
return dict(re.findall("^(.*): (.*)$", string, re.M))
當我用它來嘗試並找到一個記錄,我得到下面的輸出:
Enter name: Daniel Ghi
{'Home Phone No.': 'Example', 'Mobile Phone No.': 'Example', 'Name': 'Daniel Ghi
', 'Address': 'Example'}
Traceback (most recent call last):
File "address.py", line 35, in <module>
search_for_person(name)
File "address.py", line 18, in search_for_person
if record['Name'] == name:
KeyError: 'Name'
正如你所看到的,這個做實際上打印出正確的數據,但它仍然有一個KeyError,我不知道爲什麼。任何人都可以啓發我嗎?
你可以在你創建你的字典的地方添加代碼嗎? – Tyler
你已經證明沒有什麼證明''Name''總是'record'中的一個鍵。你唯一的'print'在*之後*出現,當我們知道它在那裏。在'record = get_record(data)'之後放置'print record'並看看它的樣子。 – DSM
「記錄」中可能有第二條記錄沒有所需的密鑰。 – bouke