我有一些数据列表,我必须逐行阅读,然后用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,并且在我必须处理大量数据的情况下可能存在进一步的问题。我真的经常搜索,发现没有什么用于我的情况。
答案 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
当文件到达文件末尾时,这也会停止循环并关闭文件,因此您不必担心这个问题。