簡體   English   中英

如何刪除文本文件中具有相同開頭和結尾的重復模式

[英]How to remove a repetitive pattern with the same beginning and ending in text files

我正在處理多個包含重復句子的 txt 文件,格式如下:

“[TEXT1]文件。標題:[TEXT2]____________ [TEXT3]文件。標題:[TEXT4]____________[TEXT5]”

*TEXT:包含單詞、\n、\t、數字、空格、標點符號

我想刪除所有以“文件”開頭的句子。 標題:'並以文本中的'____________'結尾。 這是我正在尋找的 output:

“[TEXT1][TEXT3][TEXT5]”

實際文本如下所示:

“xxxxx \n\t, \t文件。標題:\t版本 2.0\t\n____________”

不幸的是,我使用的代碼刪除了第一次出現的“File.Title”和最后一次出現的“Version 2.0”之間的所有內容。 我想知道是否有一個解決方案可以更好地解決我的問題?

這是我使用的代碼。

text = re.sub('File. Title:\s.*\sVersion 2.0','',text, flags = re.DOTALL)
text = text.replace("____________", "")

謝謝!

s = "[TEXT1]File. Title:[TEXT2]____________[TEXT3]File. Title:[TEXT4]____________[TEXT5]"

def filter_texts(s):
    start = 'File. Title:'
    end = '____________'
    s2 = s.replace(start, f'splitmarker{start}').replace(end, f'{end}splitmarker')
    s2 = s2.split('splitmarker')
    s2 = filter(lambda ss: not (ss.startswith(start) and ss.endswith(end)), s2)
    s2 = ''.join(s2)
    return s2

print(filter_texts(s))

印刷

[TEXT1][TEXT3][TEXT5]

此代碼將每個開始標記(即'File. Title:'替換為與開始標記連接的拆分標記和每個結束標記(即'____________' )與與拆分制造商連接的結束標記(其中拆分制造商只是一個字符串(希望) 否則不會發生,這里設置為'splitmarker' ) 這樣當字符串被分割標記分割時,可以直接按所需條件過濾結果文本列表,(即文本不以開始標記開頭或不以結束標記結束)。 請注意,雖然這樣做可以解決問題,但可能存在更優雅的解決方案。

您可以嘗試使用正則表達式來識別此類行,然后將它們拆分。

暫無
暫無

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

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