![](/img/trans.png)
[英]Delete a line in multiple text files with the same line beginning but varying line ending using Python v3.5
[英]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.