在python中逐行读取并记住文件

时间:2017-09-02 19:02:46

标签: python regex

我有一些数据列表,我必须逐行阅读,然后用regexp解析,从我那里提取有用的数据:

现在代码如下:

counter = 0 # first line of the file

with open(data) as f:
    for line in f:
        counter += 1
        f.readlines()[counter]
        ...
        name = re.search(r'(?<=-)\d.*?(?=\s)', line)
        ...

所以现在line有文本文件的第一行,我可以在它上面应用一些regexp来提取数据,主要问题是它似乎没有按预期工作,我知道解决方案不是很优雅,但我需要的是:

  • 在变量中记住一行,直到下一次迭代

  • 检查文件是否结尾,然后退出

  • 无法一次解析所有文件的行

  • 文本文件的可用大小未知

我对我的解决方案感到不满,因为它根本不是pytonish,并且在我必须处理大量数据的情况下可能存在进一步的问题。我真的经常搜索,发现没有什么用于我的情况。

1 个答案:

答案 0 :(得分:1)

当您执行for line in f时,您将逐行遍历文件,因此除了您的情况之外,您不需要任何其他内容。例如:

with open(data) as f:
    for line in f:
        line = line.rstrip() # <- use this if you want to get rid of new line character
        name = re.search(r'(?<=-)\d.*?(?=\s)', line)
        # your code

当文件到达文件末尾时,这也会停止循环并关闭文件,因此您不必担心这个问题。