2013-03-22 93 views
1

具體來說,我有一個文本文件,其中包含多行安排,以便每個條目的關鍵字是組的第一行,其後是相關值,後面是換行符下一個關鍵。我很難用while循環來完成readline。如何將文件讀取到Python特定文件類型的字典中

例如,第一行可能是餐廳名稱,然後是幾行客戶,然後我需要在餐廳名稱的關鍵字下寫入字典的值。

我真的不熟悉文件閱讀,所以我害怕我所擁有的並不是真正的幫助。

我猜這樣的事情,但它甚至沒有達到半功能。

編輯:感謝我應該澄清的答覆,對應鍵的每個值項在後面的行中列出,後面的行在下一個鍵前面的列表末尾有一個空行。不幸的是,我不得不在這裏使用readline方法。

restaurants = {} 
    patrons = [] 

    line = file.readline() 
    s = line.strip('\n') 

    while s != '' 
    restaurant = s 
    line = file.readline 
    patrons.append(s) 
+5

請編輯您的帖子,包括你的一個解決方案的嘗試。人們會指出你在正確的方向。 – bernie 2013-03-22 19:06:11

+3

另外,你能提供一個輸入和輸出的例子嗎? – drekyn 2013-03-22 19:09:01

+0

與「readlines()」方法相反,你爲什麼「不幸地被迫在這裏使用readline方法」? – 2013-03-22 20:06:41

回答

0

編輯:根據新的問題規範修改。

with open("filename") as f: 
    lines = f.readlines() 
restaurants = {} 
current_key = None 
for line in lines: 
    line = line.strip() 
    if not line: 
     current_key = None 
    elif not current_key: 
     current_key = line 
     restaurants[current_key] = [] 
    else: 
     restaurants[current_key].append(line) 

如果像你說的,你真的真的不能在這裏使用readlines()出於某種原因,只是重寫for環路作爲while循環,一次讀取一行直到EOF。

5

假設您的文本文件看起來像這樣

麥當勞賬單博鮑勃

我有佈置成多行的文本文件的 關鍵每個條目是組中的第一行,後跟相關的 值,後面是換行符

my_dict = {} 

with open("rest.txt", 'r') as f: 
    for line in f: 
     items = line.split() 
     key, values = items[0], items[1:] 
     my_dict[key] = values 


print my_dict 

這將產生

{'mcdonalds': ['bill', 'bo', 'bob']}