我在理解如何做这件事时遇到了一个问题。我有一个txt文件来处理生日:
**January birthdays:**
**17** - !@Mark
**4** - !@Jan
**15** - !@Ralph
**February birthdays:**
**27** - !@Steve
**19** - !@Bill
**29** - !@Bob
该列表每个月继续,每个月用一个空行分隔。你到底是如何按照这样的格式对日期进行排序的
例如,一月应该是:
**January birthdays:**
**4** - !@Jan
**15** - !@Ralph
**17** - !@Mark
我的头脑风暴:
我想也许我可以从特定索引中使用readlines(),然后将每一行保存到一个列表中,以某种方式检查整数,然后正确地重新写入文件。但这似乎太乏味了,坦率地说,这似乎是一个完全错误的想法
我还考虑过使用partial()
来读取一个stop条件,比如下个月的行,然后基于该条件进行排序
Python是否提供了更简单的方法来完成类似的事情
你可以这样做
代码
输出
可选,必要时也可对月份进行排序
这个程序在Windows或Linux下运行,它们有一个排序程序。它通过读取输入文件的每一行,并将每行4个字符、2位数月数和2位数日数(对于月份之间的空白行使用“99”作为日数,以便它遵循每月的生日)来工作。然后,它将这些修改后的行传输到排序程序,并处理管道输出,以删除前4个字符,并就地重写文件,,这意味着您可能需要在运行此操作之前对文件进行备份,以防计算机在处理过程中中途宕机。修改代码以将输出写入单独的文件应该不会太困难
之所以使用这种技术,是因为没有对文件的大小做出任何假设,即给定月份可能有数百万个生日。只要排序程序可以处理输入,这个程序就可以
在这里使用
collections.defaultdict
非常方便,因此您无需进行任何检查,只需添加数据即可。基本上,您只需读取将当前月份保存在变量中的文件,然后检查是否在新月份,如果在新月份,则只需更新它,如果在日期,则获取日期并附加字符串。(这允许多个人有相同的生日这将根据您的示例将数据整齐地放入dict中,如下所示:
从这里开始,您只需在数据中进行循环,并在循环和写入文件时对日期进行排序
相关问题 更多 >
编程相关推荐