謝謝您之前的建議,正則表達式蟒蛇FASTA
我有另一個正則表達式的問題:
現在我有這個模式的列表:
*7 3 279 0
*33 2 254 0.0233918128654971
*39 2 276 0.027431421446384
,並用DNA測序文件FASTA格式:
編輯重新格式化線
>OCTU1
GCTTGTCTCAAAGATTAAGCCATGCATGTATAAGCACAAGCCTAAAATGGTGAAGCCGCGAATAGCTCATTACAACAGTCGTAGTTTATTGGAAAGTTCACTATGGATAACTGTGGTAATTCTAGAGCTAATACATGTTCCAATCCTCGACTCACGGAGAGGTGCATTTATTAGAACAAAGCTGATCAGACTATGTCTGTCTCAGGTTGACTCTGAATAACTTTGCTAATCGCACAGTCTTTGTACTGGCGATGTATCTTTCATGCTATGTA
>OCTU2
GCTGCTTCCTTGGATGTGGTAGCCGTTTCTCAGGCTCCCTCTCCGGAATCGAACCCTATTCCCCGTTACCCGTTCAACCATGGTAGGCCCTACTACCATCAAAGTTGATAGGGCAGATATTTGAAAGACATCGCCGCACAAAGGCTATGCGATTAGCAAAGTTATTAGATCAACGACGCAGCGATCGGCTTTGACTAATAAATCACCCCTCCAGTTGGGGACTTTTACATGTATTAGCTCTAGAATTACCACAGTTATCCATTAGTGAAGTACCTTCCAATAAACTATACTGTTTAATGAGCCATTCGCGGTTTCACCGTAAAATTAGGTTGTCTTAGACATGCATGGCTTAATCTTTGTAGACAAGC
我需要在Fasta文件(例如,> OCTU7和> OCTU33)中查找列表中帶有*(例如7或33)的數字,並將另一個文件複製到僅存在的Fasta序列在列表中,這是我的腳本:
regex=re.compile(r'.+\d+\s+')
OCTU=b.readlines()
while OCTU:
for line in a:
if regex.match(OCTU)==line:
c.write(OCTU)
腳本,似乎工作,但我認爲該模式是不正確的,因爲創建該文件是空的。
非常感謝您的寶貴意見。
嘿,這裏有一些提示:你提到了兩個文件......哪些是你顯示的代碼片段?你想使用的正則表達式可能是'r'\ *(\ d +)\ s +''(越具體越好)。 – dsign 2013-02-18 15:42:50
是否是Fasta文件? ''> OCTO1 ...> OCTnn'',這樣就可以得到數字列表,然後得到第n'* 2'行。我編輯了你的Q,因爲它沒有顯示''''',因爲這在標記中是特殊的。 – sotapme 2013-02-18 16:36:39
感謝您的建議,對於dsign,這兩個文件是「a」和「b」(b代表fasta,a是列表),我知道該模式應儘可能具體,但在fasta文件中,我沒有*符號.....對於sotapme是Fasta文件是> OCTU1 \ nACGTTCCAT ..... \ n> OCTU2 \ nGCTACCT \ n ....我沒有意識到在文本中它沒有被正確寫入....對不起 – user2072622 2013-02-19 08:43:52