Python迭代器,一行一行读取文本

在处理文本的时候,首先要做的是读取一下文本文件,一般的方法如下:

corpus = open('这个位置放文件绝对路径', 'r').readlines()

将这个文本文件按行读取,每行一个元素放到一个list中。但是需要将整个文本文件先全部装入内存中。

如果文本文件太大,不能一次性读入内存怎么办。要使用Python中的迭代器,一次读取一个成员,然后对这个成员进行某种操作就可以了。

具体方法如下:

class Load_Corpus_with_Iteration(object): # 使用迭代器读取语料库
    def __init__(self, path):
        self.path = path

    def __iter__(self):
        for line in open(self.path):
            yield line.split()

corpus = Load_Corpus_with_Iteration('/Users/John/Desktop/yelp_dataset_challenge_academic_dataset/review_text.txt')
for item in corpus:
    print item

我没有将全部的文本文件装入内存,而是每次只指向迭代器的下一个指针位置,对这个指针位置进行某种操作(上面的代码中进行了split()操作),操作完后,内存的指针不变,等待下一次操作。在主函数中,我们生成了一个对象corpus并使用for循
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值