这似乎是一个非常基本的问题,但我对python还不太熟悉,在花了很长时间试图自己找到解决方案之后,我想是时候问问更高级的人了!
所以,我有一个文件(示例):
ENSMUSG00000098737 95734911 95734973 3 miRNA
ENSMUSG00000077677 101186764 101186867 4 snRNA
ENSMUSG00000092727 68990574 68990678 11 miRNA
ENSMUSG00000088009 83405631 83405764 14 snoRNA
ENSMUSG00000028255 145003817 145032776 3 protein_coding
ENSMUSG00000028255 145003817 145032776 3 processed_transcript
ENSMUSG00000028255 145003817 145032776 3 processed_transcript
ENSMUSG00000098481 38086202 38086317 13 miRNA
ENSMUSG00000097075 126971720 126976098 7 lincRNA
ENSMUSG00000097075 126971720 126976098 7 lincRNA
我需要写一个包含所有相同信息的新文件,但按第一列排序。
到目前为止,我使用的是:
lines = open(my_file, 'r').readlines()
output = open("intermediate_alphabetical_order.txt", 'w')
for line in sorted(lines, key=itemgetter(0)):
output.write(line)
output.close()
它不会返回任何错误,但只是将输出文件与输入文件完全一样写入。
我知道这肯定是一个非常基本的错误,但如果你们中的一些人能告诉我我做错了什么,那就太神奇了!
非常感谢!
我在打开文件的方式上遇到了问题,所以关于已经打开的数组的答案并没有真正的帮助。
与SuperBiasedMan的想法相同,但我更喜欢这种方法:如果您想要另一种排序方式(例如:如果第一列匹配,则按第二列排序,然后按第三列排序等),则更容易实现
你的问题是你没有把每一行都变成一个列表。当你读入文件时,你得到的只是整个行的字符串。然后按每行的第一个字符进行排序,这始终是输入中的相同字符,
'E'
。要按第一列排序,您需要将第一个块分割开来,然后阅读该部分。所以你的关键应该是:
split
将把您的行变成一个列表,然后从该列表中获取第一列。如果输入文件是制表符分隔的,也可以使用csv模块。
按第一列排序。
在中更改号码
用于按不同列排序。
相关问题 更多 >
编程相关推荐