这似乎是一个非常基本的问题,但是我是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()
它不会返回任何错误,而只是将输出文件写入与输入文件完全相同的位置。
我知道这肯定是一个非常基本的错误,但是如果你们中的一些人可以告诉我我做错了,那将是惊人的!
非常感谢!
我在打开文件时遇到了麻烦,因此有关已打开的数组的答案并没有真正的帮助。
如果输入文件用制表符分隔,则也可以使用csv模块。
import csv from operator import itemgetter reader = csv.reader(open("t.txt"), delimiter="\t") for line in sorted(reader, key=itemgetter(0)): print(line)
按第一列排序。
更改号码
key=itemgetter(0)
用于按其他列排序。