我需要從幾個文件中提取兩個文本塊,並使用python將它們放在單獨的列表中。第一個塊從第30行開始,並且不太難提取。第二個塊在第一個塊之後開始2行;問題是這些塊可以是可變長度的。例如:Python從文件中提取文本塊
prj_files = [
line,
line,
etc
]
prj_files_2 = [
line,
etc
]
所以我需要採取一切[]之間的線路中的第一塊,把它放在一個列表,並採取[]之間的線路中的第二塊,並把它放在另一個列表。截至目前,我使用:
for i, line in enumerate(prj):
if i > 29:
,開始在特定的行,然後它使用正則表達式來找到「]」它打破了for循環,並將其記錄在CNT結束就行了。然後我使用另一個循環從cnt + 2開始提取第二個塊。雖然我認爲這是有效的,但我覺得它超級低效,因爲我基本上是兩次做同樣的事情。有沒有明顯更好的方法,我失蹤了?
編輯:所以,而不是解析文件,我試圖用import
來代替。我認爲它更簡單,但由於我循環瀏覽一些文件以查找所有文件,因此我有一個代表文件名的常規變量。這意味着當我嘗試使用變量導入文件時,我得到的模塊不存在錯誤。因此,例如,我的變量名稱爲py_file
,而import
正在將其讀取爲py_file
而不是實際的路徑值。有沒有辦法解決這個問題?
什麼是原始文件的內容? – farhawa
解析這些行最簡單的方法可能是'exec'文件的內容,這通常是皺眉,所以,如果我可能會問,爲什麼這些文件是這樣佈置的?這可能是[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – TigerhawkT3
分享你的正則表達式? –