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

2024-09-22 10:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过在每行的空格之间添加“->;”和“:”来附加字符串列表。我的当前输出如下所示:

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

Tags: gtmapinputdatadeflineitempatterns
2条回答

或者,内部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'

您的sortMatrixlambda函数创建了该格式

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

它在所有项目之间插入空格。你知道吗

我会这样做:

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

所以两个第一项用->隔开,另一项用:

使用format和删除join可能更好,因为这对2个元素来说太过致命了(这样就省去了map(str的麻烦:

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

相关问题 更多 >