整理文本文件說我有一個fomatted這樣的食譜一個文本文件:與蟒蛇
標題:密歇根派:
成份:8盎司奶油奶酪1可以加糖煉乳¼Ç 檸檬汁15盎司碎菠蘿8盎司鮮奶油
方向:很好地排出菠蘿。打奶油奶酪,直到 它非常光滑。在 時間稍微添加加糖的煉乳。混合檸檬汁和菠蘿。摺疊在鮮奶油中。 將混合物倒入兩個全麥餅乾餡餅皮並冷藏。
我該如何使用Python將所有標題排序在一起,所有的成分聚集在一起......?
整理文本文件說我有一個fomatted這樣的食譜一個文本文件:與蟒蛇
標題:密歇根派:
成份:8盎司奶油奶酪1可以加糖煉乳¼Ç 檸檬汁15盎司碎菠蘿8盎司鮮奶油
方向:很好地排出菠蘿。打奶油奶酪,直到 它非常光滑。在 時間稍微添加加糖的煉乳。混合檸檬汁和菠蘿。摺疊在鮮奶油中。 將混合物倒入兩個全麥餅乾餡餅皮並冷藏。
我該如何使用Python將所有標題排序在一起,所有的成分聚集在一起......?
1)裝載的所有文件,解析它們並把再進dictionnaries
2)對列表進行排序列表,你所希望的方式(見How do I sort a list of dictionaries by values of the dictionary in Python?)
初始化字典有三個按鍵:TITLE,成分,方向。
解析文本文件。只要您找到其中一個鍵,請將其下面的文本添加到詞典中適當的鍵值對中。當你看到另一個大膽的密鑰並繼續解析時停止。
例如,如果您更喜歡TITLES的列表,而不是長,長,長的字符串,請使用包含列表的字典。
例如
data = {'TITLE':[], 'INGREDIENTS':[], 'DIRECTIONS':[]}
將解析的數據追加到列表中。
我喜歡你的答案,但我將如何從密鑰打印到下一個鍵? – quantumdisaster
迭代字典(就像你將一個列表)一次訪問一個密鑰。 –
假設配方列表位於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
現在就按照您的意願對其進行排序。
當我看着這個我的第一個想法是:[kragen's'aislesort.py'](http://lists.canonical.org/pipermail/kragen-hacks/2005-November/000420.html),但這需要文件的記錄爲空行分隔,它需要一個正則表達式來提取排序依據。 –
這非常接近http://stackoverflow.com/questions/8280533/text-file-into-sqlite3-database-with-python。請閱讀http://tinyurl.com/so-hints,並致力於改善現有問題,而不是將其視爲新問題。 – Johnsyweb