2011-11-26 122 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 

现在就按照您的意愿对其进行排序。