我想根据列[0]对包含15列的制表符分隔数据文件进行排序,即我的输入文件(我只说明第0列)
输入文件和所需的输出文件
contig1 contig1
contig102 contig1
contig405 contig2
contig1 contig17
contig2 contig102
contig1005 contig405
contig17 contig1005
下面的脚本排序,但是从1&lt;在图2中,它给了我所有的重叠群,其中1然后传递到2,同样从0 <0。 1,给我102前2,如何改进呢?
f1 = open('file.txt','r')
a=sorted(f1.readlines(), key=lambda l: l.split()[0]))
r=open('file.txt','w')
r.writelines(a)
f1.close
答案 0 :(得分:1)
如果
l.split()[0]
给出
contig1
contig102
您想要排序
int(l.split()[0][6:])
是
1
102
做
a = sorted(f1, key=lambda l: int(l.split()[0][6:]))
答案 1 :(得分:1)
这个怎么样:
import re
def alphanumsort(x):
reg = re.compile('(\d+)')
splitted = reg.split(x)
return [int(y) if y.isdigit() else y for y in splitted]
print sorted(["contig1","contig20","bart30","bart03"], key = alphanumsort)