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

在python中逐行读取并记住文件,python,regex,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)

我有一些数据列表,我必须逐行读取,然后用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)
        ...
counter=0#文件的第一行
打开(数据)作为f:
对于f中的行:
计数器+=1
f、 readlines()[计数器]
...

name=re.search(r’(?当您对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
打开(数据)为f的
:
对于f中的行:

line=line.rstrip()#
f.readlines()
一次读取整个文件,f
行中的
不留任何数据。删除它。它不是一次解析整个文件吗?代码逻辑的原因是提取的数据将用于更改目录和git提交消息,因此提交数据取决于文件条目,应该不同(例如,如果我有60个文件条目,我将不得不进行60次不同的提交:)它将被逐行解析,就像在整个代码执行后它将跳转到下一行一样。在f.read().splitlines()中对行使用
将消除使用
line=line.rstrip()的需要
@ZachGates这将导致文件中出现额外的循环,如果文件太大,这可能是一个问题