我有一个小的格式问题,我似乎无法解决。我有一些长串,以DNA序列的形式出现。我将它们分别添加到一个单独的列表中,每个列表中的单个项目都包含字母。它们的长度不等,所以我在两者中较短的一个上附加了“N”。Python - 用|来水平打印两个字符串
例:
SEQ1 = [ 'A', 'T', 'G', 'G', 'A', 'C', 'G', 'C', 'A'] seq2 = ['A','T','G','G','C','T','G']
seq2变成:['A','T','G' , 'G', 'C', 'T', 'G', 'N', 'N']
目前,每个列表比较信后,我得到:
ATGG - G- -
其中' - '在字母(包括“N”)中是不匹配的。
理想是什么,我想打印的是:
seq1 ATGGACGCA
|||||||||
seq2 ATGG--G--
我已经与打印语句结尾的新行字符逗号玩弄,但我无法得到它的工作。我想打印一个标识符为每个人在同一行上,因为它的顺序。
这里是用来将两个seqs比较功能:
def align_seqs(orf, query):
orf_base = list(orf)
query_base = list(query)
if len(query_base) > len(orf_base):
N = (len(query_base) - len(orf_base))
for i in range(N):
orf_base.append("N")
elif len(query_base) < len(orf_base):
N = (len(orf_base) - len(query_base))
for i in range(N):
query_base.append("N")
align = []
for i in range(0, len(orf_base)):
if orf_base[i] == query_base[i]:
align.append(orf_base[i])
else:
align.append("-")
print ''.join(align)
目前,我只是打印什么,我想打印的“底部”部分。
所有帮助表示赞赏。
为了得到字符对,也许你应该使用'zip(orf,query)'?那么知道打印什么会简单得多。 – 2014-10-17 17:01:05
你的字符串很长吗? (即,当它进入一个新的行它不能很好地工作?) – Luigi 2014-10-17 17:35:17
@Luigi,这些字符串很长。字符串1(缩小到需要的数量后)是1400个字符。字符串2是1900个字符。这就是为什么我需要将两端添加到字符串1. – 2014-10-17 18:35:19