【发布时间】:2013-02-18 15:29:39
【问题描述】:
感谢您之前的建议,
我还有一个正则表达式问题:
现在我有一个带有这种模式的列表:
*7 3 279 0
*33 2 254 0.0233918128654971
*39 2 276 0.027431421446384
还有一个 Fasta 格式的 DNA 测序文件:
EDIT 重新格式化的行
>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)
脚本似乎可以工作,但我认为模式不正确,因为创建的文件是空的。
提前感谢您的宝贵建议。
【问题讨论】:
-
嘿,这里有一些提示:你提到了两个文件......这是你显示的代码 sn-p 中的那些?您要使用的正则表达式可能是
r'\*(\d+)\s+'(越具体越好)。 -
Fasta 文件是否有序?
>OCTO1 ... >OCTnn,这样就可以得到数字列表,然后得到n'th * 2行?我对您的 Q 进行了编辑,因为它没有显示>,因为它在标记中很特殊。 -
感谢您的建议,对于dsign来说,这两个文件是“a”和“b”(b代表fasta,a是列表),我知道模式应该尽可能具体,但在 fasta 文件中我没有 * 符号.....对于 sotapme 是的,Fasta 文件是 >OCTU1\nACGTTCCAT.....\n>OCTU2\nGCTACCT\n....我没有意识到文字书写不正确....对不起
标签: python regex dna-sequence