![](/img/trans.png)
[英]Find regular expression or list of regular expressions across multiple text files and extract matching lines
[英]Regular expression matching repeating pattern across multiple lines
我有一個文件頭(標有“>”),然后在下一行輸入文字。 我需要捕獲標題中包含相同數字的組。 在下面的示例文本中,我想將前四行(兩個標頭都包含“ 4471”)打印到一個文件,並將后四行(標頭包含“ 4527”)打印到另一個文件。
>VUSY-4471
AAAGTAATTCAGGATGAAGAGAGACTGCT
>XFJG-4471
AATGTTATTCAAGATGAAGATAGGTTGCTGGCTGCA
>Ambtr-4527
GAGGAGCGGGTGATTGCCTTGGTCGTTGGTGGTGG
>Arath-4527
GAAGAGAGAGTGAATGTTCTTGTA
當在文本編輯器中測試時,以下正則表達式成功捕獲了文本組(請參見屏幕截圖),但是我似乎無法使其在python腳本中工作。 任何幫助將不勝感激!!
>.+?-(\d+)[\S\s]+>.+-\1\n.+
捕獲文本的示例
您可能會節省一些時間,以弄清如果要分解的內容,如何用正則表達式解決整個問題:讀兩行,根據第一行中的數字確定需要轉到的文件,然后繼續進行下一個配對,直到解析了整個文件。 這樣,您只需要一個非常簡單的正則表達式即可從第一行獲取數字: ^>.+?-(\\d+)$
或什至是>.+-(\\d+)
一次。
該正則表達式似乎過於復雜,因為它僅提取一串數字。 這是使用更簡單的正則表達式的解決方案
import re
pat = re.compile(r'(\d+)')
with open('infile.txt') as infile:
for line in infile:
num = pat.findall(line)[0]
with open(digits+".txt", "a+") as f:
f.write(line)
f.write(next(infile)) # This assumes an even number of lines in the input file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.