添加部分行以生成序列行(python)

2024-04-26 11:25:05 发布

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

我有一个文件,上面有这样的行:

NM_chr7+115926679 115935830 115927071 11593344 2 115926679115933260,(对本栏感兴趣,这些数字被称为外显子起始)115927221115935830,(而这一个,这些被称为外显子结束)

最后两列(以逗号分隔的列)可以有不同数量的整数。这意味着它可以有5个数字,用逗号分隔,甚至15个。你知道吗

如果我有文件的第一行,我会想要这样一行:

NM_198212|chr7(+):115926679-115935830|115926679-115927221,115933260-115935830 (yet this could go on based on the amount of start and ends given)

在更简单的范围内:

纳米????chr12-10 110 10 110 3 10,50100,20,60110

我希望那条信息线的尽头是10-20,50-60100-110

如何编写一个代码,使我想要输出的行的末尾包含这些代码中的每一个,而不考虑数字的数量。你知道吗

我有这个代码,它将配对所有的开始和结束,如果这是有用的。你知道吗

fp = (infile, 'r')
for line in fp:
   tokens = line.split()
   exonstarts = tokens[8][:-1].split(',')
   exonends = tokens[9][:-1].split(',')
   zipped = list(zip(exonstarts, exonends))

对于上面的例子,zipped应该是[(10,20),(50,60),(100,110)]。我的问题是如何将它合并到我想要的信息行中(除了包含开始和结束的部分之外,我已经编写了整个表达式)。你知道吗

因此,我不知道如何将这些从列表中取出并转换成我想要的格式。你知道吗


Tags: 文件代码信息数量online数字split
1条回答
网友
1楼 · 发布于 2024-04-26 11:25:05

不确定这是你想要的,但是:

range_str = ",".join(["%s-%s" % item for item in zipped])

如果压缩==[(10,20),(50,60),(100,110)]

10-20,50-60,100-110

相关问题 更多 >