2011-11-26 116 views
0

整理文本文件說我有一個fomatted這樣的食譜一個文本文件:與蟒蛇

標題:密歇根派:

成份:8盎司奶油奶酪1可以加糖煉乳¼Ç 檸檬汁15盎司碎菠蘿8盎司鮮奶油

方向:很好地排出菠蘿。打奶油奶酪,直到 它非常光滑。在 時間稍微添加加糖的煉乳。混合檸檬汁和菠蘿。摺疊在鮮奶油中。 將混合物倒入兩個全麥餅乾餡餅皮並冷藏。

我該如何使用Python將所有標題排序在一起,所有的成分聚集在一起......?

+0

當我看着這個我的第一個想法是:[kragen's'aislesort.py'](http://lists.canonical.org/pipermail/kragen-hacks/2005-November/000420.html),但這需要文件的記錄爲空行分隔,它需要一個正則表達式來提取排序依據。 –

+0

這非常接近http://stackoverflow.com/questions/8280533/text-file-into-sqlite3-database-with-python。請閱讀http://tinyurl.com/so-hints,並致力於改善現有問題,而不是將其視爲新問題。 – Johnsyweb

回答

1

初始化字典有三個按鍵:TITLE,成分,方向。

解析文本文件。只要您找到其中一個鍵,請將其下面的文本添加到詞典中適當的鍵值對中。當你看到另一個大膽的密鑰並繼續解析時停止。

例如,如果您更喜歡TITLES的列表,而不是長,長,長的字符串,請使用包含列表的字典。

例如

data = {'TITLE':[], 'INGREDIENTS':[], 'DIRECTIONS':[]} 

將解析的數據追加到列表中。

+0

我喜歡你的答案,但我將如何從密鑰打印到下一個鍵? – quantumdisaster

+0

迭代字典(就像你將一個列表)一次訪問一個密鑰。 –

0

假設配方列表位於recipe.txt中,並且標頭總是用冒號分隔,下面的代碼可讓您獲得您的字典。

with open('recipe.txt') as recipe: 
    g = (line.split(':',1) for line in recipe) 
    g = ((i[0],i[1:]) for i in g if len(i)>1) 
    d = dict() 
    for k,v in b: 
    d[k] = d.get(k,[]) + v 

現在就按照您的意願對其進行排序。