假设我有一个荒谬的大文本文件。我不认为我的文件会增长到大约500mb,但出于可伸缩性和我自己的好奇心,假设它的大小为几GB。在
我的最终目标是将它映射到一组句子(用“?”“!”分隔)为了所有的意图和目的,';'和每一个句子到一系列的单词。然后我要用numpy进行一些统计分析。在
要做到这一点,最具伸缩性的方法是什么?在
PS:我想重写文件,使每行有一个句子,但在将文件加载到内存时遇到了问题。我知道一种解决方案,即读取一个文件中的卡盘数据,对其进行操作,然后将其写入另一个文件,但这对于磁盘内存来说似乎效率低下。我知道,现在大多数人都不会担心使用10gig的暂存空间,但似乎应该有一种直接编辑文件的方法。在
我的第一个想法是使用一个流解析器:基本上你一次读入一个文件,然后边做统计分析。这通常是用标记语言(如HTML和XML)完成的,因此您会发现许多针对这些语言的解析器,包括Python标准库中的解析器。一个简单的句子分析器是你自己可以写的东西,例如:
这只会根据需要从文件中读取数据来完成一个句子。它以512字节的块读取,因此无论实际的文件有多大,您在内存中一次只能保存少于1千字节的文件内容。在
在流解析器之后,我的第二个想法是memory map文件。这样您就可以遍历并用换行符替换每个句子结束符后面的空格;之后,每个句子都将从一个新行开始,您就可以打开文件并使用
readline()
或for
循环来逐行遍历它。但是您仍然需要担心多行语句;另外,如果任何一个句子结束符后面跟一个空格字符,您就必须插入一个新行(而不是用它替换其他内容),对于一个大文件来说,这可能是非常低效的。在相关问题 更多 >
编程相关推荐