我正在尝试使用QPlaintextedit小部件作为文本编辑器,到目前为止它工作得很好,使用它我可以输入大量文本,UI不会冻结或断断续续。 我以为我会突破界限,看看会发生什么。
基本要点是使用我的编辑器我可以编写伪代码,然后解析代码中的错误。如果没有错误,解析器会根据输入文本吐出一些xml。最后,我得到了一个描述文本的精美xml文档。基本上我已经设法将伪代码转换为xml文件。
这种方法运行得相当不错,但编辑器中的文本越多,它使用的内存就越多。 现在我设法将大约750k行文本粘贴到我的编辑器中,当需要解析它时,我首先阅读文本,然后将整个文本发送到解析器。为此我做了:
editor_text=QPlainTextEdit.toPlainText()
这给了我编辑器中的所有文本,我可以将其发送到解析器,然后将其转换为和xml文件(如果没有发现错误)
现在编辑器中有750k行文本, toPlainText()方法效果不好,实际上我的内存已用完了。
我的问题是我应该如何处理大量文本才能解析它。
我想到的一件事(未尝试过)是逐块(或逐行)读取文本解析每一行并将其转换为xml,但我仍然需要处理返回的xml,保持为内存中的每个行/块生成xml,直到解析整个编辑器文本仍然可能会耗尽内存
我无法想象这只是与QPlainTextEdit小部件有关,但一般来说当有大量“代码”/文本说1M,甚至10M行“代码”时,在单个文件中如何去阅读和解析所有10M线?
对于我的例子,我在Windows上使用python 2.4使用pyqt4.8