使用正则表达式分析大文本文件

2024-04-25 14:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的文本文件(1GB),其中每个“行”都用##隔开。
例如:

## sentence 1 ## sentence 2
## sentence 3

我正试着按分隔符打印文件。在

我尝试了以下代码,但是read()函数崩溃了(因为文件的大小)。在

^{pr2}$

有什么想法吗?在


Tags: 文件函数代码readsentence文本文件分隔符pr2
2条回答

这将以块(共chunksize字节)读取文件,从而避免与一次读取过多文件相关的内存问题:

import re
def open_delimited(filename, delimiter, *args, **kwargs):
    """
    http://stackoverflow.com/a/17508761/190597
    """
    with open(filename, *args, **kwargs) as infile:
        chunksize = 10000
        remainder = ''
        for chunk in iter(lambda: infile.read(chunksize), ''):
            pieces = re.split(delimiter, remainder + chunk)
            for piece in pieces[:-1]:
                yield piece
            remainder = pieces[-1]
        if remainder:
            yield remainder

filename = 'post.txt'
for chunk in open_delimited(filename, '##', 'r'):
    print(chunk)
    print('-'*80)

您可以使用islice。在

from itertools import islice

file = open('file.txt', 'r')
while True:
  slice = islice(file, buffer)
  to_process = []
  for line in slice:
    to_process.append(line)
  if not to_process:
    break
  #process to_process list
file.close()

buffer是一次要读取的行数(必须定义int)。在

相关问题 更多 >