Python 从文件中提取文本块

Python extracting blocks of text from a file

我需要从几个文件中提取两个文本块并使用 python 将它们放在单独的列表中。第一个块从第 30 行开始,并不太难提取。第二个块在第一个块之后的 2 行开始;问题是块可以是可变长度的。例如:

prj_files = [
  line,
  line,
  etc
]

prj_files_2 = [
  line,
  etc
]

所以我需要将第一个块中 [] 之间的所有行放入一个列表中,并将第二个块中 [] 之间的所有行放入另一个列表中。截至目前,我使用:

for i, line in enumerate(prj):
  if i > 29: 

从特定行开始,然后它使用正则表达式找到它打破for循环的“]”并将它结束的行记录在cnt中。然后我使用另一个 for 循环从 cnt + 2 开始提取第二个块。虽然我认为这行得通,但我觉得它非常低效,因为我基本上是在做同样的事情两次。我是否缺少明显更好的方法?

编辑:所以我没有解析文件,而是尝试使用 import。我确实认为它要简单得多,但由于我正在遍历一些文件以查找所有文件,所以我有一个代表文件名的通用变量。这意味着当我尝试使用变量导入文件时,我得到模块不存在的错误。因此,例如,我的变量名称是 py_fileimport 将其读取为 py_file 而不是实际路径值。有办法解决这个问题吗?

我想你的文件内容是:

prj_files = [
  line,
  line,
  etc
]

prj_files_2 = [
  line,
  etc
]

那么你可以这样做:

exec open(YOUR_FILE).read()
f1 = open(FIRST_FILE,"w")
f2 = open(SECOND_FILE,"w")
for line in pjr_files:
    f1.write(line)
for line in pjr_files_2:
    f2.write(line)