【发布时间】:2014-05-27 20:13:51
【问题描述】:
我有一个包含大约 10 列的文本文件,其中 7 个是日期/时间戳(年、月、日、小时、分钟、秒、厘秒)。所以数据看起来大致像......
User[TAB]System[TAB]Year[TAB]Month[TAB]Day ... centisec[TAB]Message
抱歉,格式太糟糕了,但我希望这能给你一些想法。
所以如果我想按年份对文件进行排序,我可以使用这个
sorted_lines = sorted(unsortedfile,key=lambda l: int(l.split('\t')[2]))
获取未排序的文件,按制表符拆分行,第 3 列,将其更改为 int 并按此排序。我可以对任何一列做同样的事情。
我正在寻找的是一种按所有日期/时间列对其进行排序的更好方法。所以按年排序,然后按月,然后按天......等等
我可以想到一些复杂的方法来做到这一点(读取每一行组合所有列,对其进行排序......或按每列进行递归排序),但我希望有人有一个更简单、更 Pythonic , 做同样的事情的方法。
【问题讨论】:
-
文件有多大?
-
@dmcauslan 我去看看文件在生产中会有多大,并且遇到了更多的错误,我必须先修复才能给出确切的答案。我的猜测是大约 150mb,但这是一个疯狂的猜测。
-
您是否查看过任何可能对您有所帮助的高级库?我主要想到的是熊猫。