簡體   English   中英

如何在txt文件中搜索和存儲文本的特定部分

[英]How to search and store specific part of text in txt files

我正在編寫一個腳本,可以在其中搜索txt文件中的特定文本,然后將其寫入另一個txt文件。 我使用兩個文件名。 文件“ in.txt”包含帶有開始和結束標記的文本的不同部分。 起始標記是一個變量:例如“ ^ 1”,“ ^ 2”或“ ^ 3”。 結束標記始終是相同的caractre“ ^”)。 我的意圖是編寫一個代碼,使得可以在“ in.txt”中搜索指定的變量(例如:“ ^ 3”),該變量用作開始標記,並從該點開始讀取所有跟隨的行,直到到達結束標記(我定義為“ ^”)。 之后,我想將這些行寫到文件“ out.txt”中。我是pyhton的新手,我必須學習很多東西。 到目前為止,我用谷歌搜索,但沒有找到我使用的解決方案。 我只找到了非常復雜的解決方案,但是沒有一個給我建議來解決我的問題(使用開始標記和結束標記進行搜索)。

到目前為止,我的代碼是:

with open (f1, encoding = "utf8", errors = "ignore") as f:
    lines = f.readlines ()
    lines = [l for l in lines if "^ 3" in l]
    with open (f2, "w") as f1:
        f1.writelines (lines)

我在文件“ out.txt”中僅得到“ ^ 3”。 而已。 也沒有以下幾行。 而且我還沒有弄清楚如何在搜索行中編碼“結束標記”。 請幫幫我! 對於經驗豐富的用戶的每條提示,我都將不勝感激,它們可以幫助我進一步提高自己的編碼能力。 謝謝!

我不確定您在做什么錯,但這對我來說很好。 可能是您重用了變量lines f1

 with open('in.txt', 'r') as f:
     lines = f.readlines()   
     lin = [i for i in lines if '^ 3' in i]              
     with open('out.txt', 'w') as f1:
         f1.write(str(lin))

這是我的“ in.txt”文件的格式。

^ 0這是文本部分0。Lorem ipsum dolor坐在amet,安全adipiscing精英。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在laoreet中,sed interdum tempus,dioo ^ ^ 1這是正文部分1。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在laoreet中,尼蘇sed中間時間,dioo ^ ^ 2這是文本部分2。Lorem ipsum dolor坐着,私服了。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在laoreet中,尼斯特sed interdum tempus,二重奏^ ^ 3這是正文部分3。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在勞雷埃(Laoreet),尼蘇爾(Nesl)sed interdum tempus,odio ^ ... ................. ^ ^ 33這是正文第33部分。Lorem ipsum dolor坐在amet,私立adipiscing精英。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在laoreet中,nisl sed interdum tempus,dioo ^運行代碼時,我進入“ out.txt”

['* 3 \\ n','* 33 \\ n']

就這樣。 因此,這不是獲得我想要的結果的方法。 當我要在begin變量之后輸入文本時:“ ^ 3” Ik要獲取文本:

這是本文的第3部分。Lorem ipsum dolor坐下來,私下自拔。 Donec purus nunc,aucin eu dignissim sed,lacinia eu urna。 在勞雷埃特,尼蘇爾·塞德

您知道這個問題的解決方案嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM