我有一个HTML文件,由以下10 mb组成:
<span class="user">Chat User1</span>
<span class="meta">Friday, August 29, 2014 at 6:03pm PDT</span>
<p>Some text</p>
<span class="user">Chat User2</span>
<span class="meta">Friday, August 29, 2014 at 6:01pm PDT</span>
<p>Some preceding text</p>
日期在文件中到处都是,对于每个日期,给定会话的聊天顺序是相反的。
我想做的是能够在python中构建一个按时间顺序写出所有内容的文本文件,即:
Chat User 2
Friday, August 29, 2014 at 6:01pm PDT
Some preceding text
Chat User 1
Friday, August 29, 2014 at 6:02pm PDT
Some text
...
考虑到文件的大小,我不确定这里最好的方法是什么,但我在想……也许建立一个有user
, date
和text
键的大字典(用字符串,日期时间,字符串作为各自的数据类型),然后对date
进行排序?老实说,我不知道最好的方法是什么。
对于仅仅10 mb,我肯定会使用内存排序。我会用Beautiful Soup解析HTML,用给定的类创建一个对象数组:
class Chat:
def __init__(self, user, date, text):
self.user = user
self.date = date
self.text = text
和排序数组:
ut.sort(key=lambda x: x.date, reverse=True)
但是如果原始文件中的顺序完全相反,并且您不想使用大量内存,则可以逐个读取文件,并在结果文件的开头插入每个聊天。