我试图通过添加" - >"来追加字符串列表。和":"在每一行的空间之间。我目前的输出如下:
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))
答案 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'