2017-04-24 112 views
1

我試圖通過在每行中的空格之間添加「 - >」和「:」來追加字符串列表。我的電流輸出是這樣的:在字符串列表中的空格中插入字符

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

有什麼錯'sortMatrix =拉姆達項: ' - >' 加入(圖(STR,項[0]))+ ':' +項目[1]' –

+0

@讓FrançoisFabre這工作完全, 謝謝! – ssm495

回答

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]) 
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'