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