当前位置:  开发笔记 > 编程语言 > 正文

按python中的第一(或第二,否则)列对文件排序

如何解决《按python中的第一(或第二,否则)列对文件排序》经验,为你挑选了1个好方法。

这似乎是一个非常基本的问题,但是我是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()

它不会返回任何错误,而只是将输出文件写入与输入文件完全相同的位置。

我知道这肯定是一个非常基本的错误,但是如果你们中的一些人可以告诉我我做错了,那将是惊人的!

非常感谢!

编辑

我在打开文件时遇到了麻烦,因此有关已打开的数组的答案并没有真正的帮助。



1> littlebird..:

如果输入文件用制表符分隔,则也可以使用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)

用于按其他列排序。

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有