Python从文件

时间:2015-06-08 19:56:23

标签: python regex extract

我需要从几个文件中提取两个文本块,并使用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而不是实际路径值。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为您的文件内容是:

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)