在字符串列表中的空格中插入字符

时间:2017-04-24 18:27:11

标签: python string append bioinformatics

我试图通过添加" - >"来追加字符串列表。和":"在每一行的空间之间。我目前的输出如下:

0 1 A
1 2 T
2 3 A
3 4 G
4 5 A
2 6 C
0 7 G
7 8 A
8 9 T

但我希望它看起来像:

0->1:A
1->2:T
2->3:A
3->4:G
4->5:A
2->6:C
0->7:G
7->8:A
8->9:T

您可以在下面找到我的代码。

def trie_edges(patterns):
    myTrie = trieConstruction(patterns)
    sortMatrix = lambda item: ' '.join(map(str,item[0]))+' '+item[1]
    return map(sortMatrix, myTrie.edges.items())

def main():

    with open('C:/Users/Sami/PycharmProjects/Bioinformatics/rosalind_ba2d.txt') as input_data:
    patterns = [line.strip() for line in input_data.readlines()]
    createMatrix = trie_edges(patterns)
    print ('\n'.join(createMatrix))

2 个答案:

答案 0 :(得分:2)

您的sortMatrix lambda函数会创建该格式

sortMatrix = lambda item: ' '.join(map(str,item[0]))+' '+item[1]

它在所有项目之间插入空格。

我会这样做:

sortMatrix = lambda item: '->'.join(map(str,item[0]))+':'+item[1]

所以2个第一个术语由->分隔,另一个由:

分隔

使用format并删除join可能会更好,因为它对2个元素来说太过分了(并且保存了map(str这个东西:

sortMatrix = lambda item: "{}->{}:{}".format(item[0][0],item[0][1],item[1])

答案 1 :(得分:0)

或者,内部re.sub替换每行中的第一个空白,并将其结果传递给外部re.sub,后者替换每行中的第二个空白。

>>> from io import StringIO
>>> source = StringIO('''\
... 0 1 A
... 1 2 T
... 2 3 A
... 3 4 G
... 4 5 A
... 2 6 G''')
>>> import re
>>> for line in source.readlines():
...     re.sub(' ', ':', re.sub(' ','->',line.strip(),1))
... 
'0->1:A'
'1->2:T'
'2->3:A'
'3->4:G'
'4->5:A'
'2->6:G'