谢谢您之前的建议,正则表达式蟒蛇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