整理文本文件说我有一个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