如何从文本文件行中提取唯一的字符串?

时间:2014-10-12 04:21:30

标签: python text extract dna-sequence

我有一个大文本文件,其中的行以这种格式组成:

Query: 1586     cccaagatgagctgcagccccccagagagagctctgcacgtcaccaagtaaccaggcccc 1645
Sbjct: 27455708 cccaagatgagctgcagccccccagagagagctctgcacgtcaccaagtaaccaggcccc 27455649

Query: 1646     agcctccaggcccccaactccgcccagcctctccccgctctggatcctgcactctaacac 1705      
Sbjct: 27455648 agcctccaggcccccaactccgcccagcctctccccgctctggatcctgcactctaacac 27455589

Query: 1706     tcgactctgctgctcatgggaagaacagaattgctcctgcatgcaactaattcaataaaa 1765              
Sbjct: 27455588 tcgactctgctgctcatgggaagaacagaattgctcctgcatgcaactaattcaataaaa 27455529

对于每一行,我希望能够在删除其他字符(查询,sbjct和变量数字)时仅提取不同的agtc序列,以便最终字符串看起来像这样

line1 = cccaagatgagctgcagccccccagagagagctctgcacgtcaccaagtaaccaggcccc
line2 = cccaagatgagctgcagccccccagagagagctctgcacgtcaccaagtaaccaggcccc
etc...

我已经在这方面工作了一段时间而无法让它发挥作用。我已尝试过re模块和.translate但未尝试结果。我在python 3.4编程。谢谢!

1 个答案:

答案 0 :(得分:3)

虽然您可以使用正则表达式(就像您尝试过的那样),但您可以使用agtc_part = line.split()[2]

轻松拆分您提供的示例

这会将给定的行拆分为字符串列表,其中分隔符是空格。索引从0开始,因此agct in的部分被索引为2。

请注意,调用split()而不显式传入指示要拆分的字符的参数,不仅要拆分空格字符,还要将连续空格组合在一起而不是在每个空格上拆分。这在您的情况下很重要,因为您在数字和agct字符串之间有不同数量的空格字符。

示例:

>>> "aaa   bbb".split()
['aaa', 'bbb']
>>> "aaa   bbb".split(' ')
['aaa', '', '', 'bbb']