iT邦幫忙

0

Python 整理大檔案txt 如何擷取在關鍵字之間的段落

  • 分享至 

  • xImage

各位前輩好,我是最近在學習Python的新手,若有敘述不完全的部分敬請告知
我現在在分析一個大型的檔案,使用python3,我想擷取的部分大概是這樣
ORIGIN
1 data data data data data.........
61 data data data data data........
121 data data data data data.....
//
irrelative irrelative irrelative irrelative irrelative irrelative
irrelative irrelative irrelative irrelative irrelative irrelative

ORIGIN
1 data data data data data.........
61 data data data data data........
121 data data data data data.....
181 data data data data data ......
//

簡單來說 我想擷取的部分是被'ORIGIN'與'//'給框住的部分 並且分段 每組data的長度不一 有40行的資料也有超過300行的 然後有多段資料

目前嘗試過https://ithelp.ithome.com.tw/questions/10202583
當中JaphenChen大大的方法 但只能順利print第一筆資料

https://ithelp.ithome.com.tw/upload/images/20220614/201498367UaNJaHKtf.png

於是改用findall 再用join去拆解list 結果Spyder炸了 所以也不太確定結果究竟如何

麻煩各位大大協助指教

obarisk iT邦研究生 2 級 ‧ 2022-06-14 23:52:33 檢舉
直接用 for 一行一行判斷最快吧
wiseguy iT邦超人 1 級 ‧ 2022-06-15 08:16:57 檢舉
如果你用 Linux,這個需求只要下個 sed 命令即可
sed -n '/^ORIGIN/,/^\/\//p' 檔案名
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
froce
iT邦大師 1 級 ‧ 2022-06-15 09:33:56
with open("./ORIGIN.txt", "r") as f:
    lines = f.readlines()
    indexs = []
    result = []
    for index, line in enumerate(lines):
        if line.startswith(r"//"):
            indexs.append(index)
    
    pairedIndexs = zip(indexs[0::2],indexs[1::2])
    for startIndex, endIndex in pairedIndexs:
        result.append(lines[startIndex: endIndex+1])
print(result)

我要發表回答

立即登入回答