python:匹配后抓取特定行

python: grab a specific line after a match

我有满满的文字
我想定义变量 date,它总是在 version 之后的三行。 这是我的代码

with open(input_file1,'r') as f:
    for i, line in enumerate(f):
        if line.startswith('Version'):
            version = line.strip()
            date = line + 3
            print(line,date)

但它不适用于 date 变量,我收到以下错误。有人可以帮忙吗?

TypeError: Can't convert 'int' object to str implicitly

line是文件中该行的字符串内容。 i 是正在解析的行的递增索引。因此你想阅读行号i+3。如果使用 .readlines().
将所有行读入内存,则可以轻松读取三行 注意如果您的文件非常大,则不建议这样做!

with open(input_file1,'r') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):
        if line.startswith('Version'):
            version = line.strip()
            date = lines[i + 3].strip()
            print(line,date)

错误消息告诉您的是您不能将数字添加到字符串。

您首先需要将字符串转换为日期时间对象,然后您可以向其中添加任何您想要的内容。

查看 datetime documentation here

对于您的情况,您可能想尝试类似的方法:

import datetime
Date = datetime.datetime.strptime(line, "%m/%d/%Y")

第二组参数确定您通过行变量输入日期时间对象的日期格式。您必须更改此位 ("%m/%d/%Y") 以匹配您的输入。