python 2.4按特定列对文本文件进行排序

python 2.4按特定列对文本文件进行排序,python,csv,Python,Csv,对于python来说是全新的,我在2.4版中发现这个问题 我有一个文本文件,其中包含3列,它们不是由单个制表符分隔的,而是由9个制表符分隔的。 1000行文件 例: 我需要做的是按第3列(0000000000000000 5062)对所有内容进行排序 使用csv阅读器是处理此问题的最佳方法吗?如何让它处理我的文本文件使用9个选项卡分隔每一列的事实。我发现的大多数其他东西都与python 2.4不兼容。因为您使用的是9个选项卡,str.split似乎应该能够正确地处理这个问题(但我看不出csv会阻

对于python来说是全新的,我在2.4版中发现这个问题

我有一个文本文件,其中包含3列,它们不是由单个制表符分隔的,而是由9个制表符分隔的。 1000行文件 例:

我需要做的是按第3列(0000000000000000 5062)对所有内容进行排序


使用csv阅读器是处理此问题的最佳方法吗?如何让它处理我的文本文件使用9个选项卡分隔每一列的事实。我发现的大多数其他东西都与python 2.4不兼容。

因为您使用的是9个选项卡,
str.split
似乎应该能够正确地处理这个问题(但我看不出
csv
会阻塞它的任何原因……:

或者可能:

delim = '\t'*9
data = [ x.split(delim) for x in fobj ]
那你就可以分类了。在较新版本的python中,您可以执行以下操作:

from operator import itemgetter
data.sort(key=itemgetter(2))
先试试这个!(根据注释和说明,
在python2.4中受支持,但在python2.3中不受支持)。也是“python2.4中的新版本”,并且
itemgetter(2)
相当于
lambda x:x[2]
或更详细的:

def get2(x):
    return x[2]

但是我认为您可能需要依赖于
cmp
,以便与非常旧的python版本兼容(注意,python3不再支持
cmp
):


到目前为止你有什么?您是在读取文件,还是被那个分隔符卡住了?Python 2.4支持
key
@J.F.Sebastian——找到了证明您的断言的文档。python2.4实际上支持
,但python2.3不支持。谢谢你指出这一点。(在python2.4中似乎发生了很多好事…
fobj=open('data.csv')data=[x.split(),用于fobj中的x]fobj.close(),来自操作符import itemgetter data.sort(key=itemgetter(2))def get2(x):返回x[2]def compare(x1,x2):如果x1[2]>x2[2]:返回1 elif x1[2]
我做错了什么?回溯(最近一次调用last):文件“test.py”,第8行,在?data.sort(key=itemgetter(2))索引器错误:列表索引超出范围,谢谢!使用
from操作符import itemgetter data.sort(key=itemgetter(2))
def compare(x1,x2):if x1[2]>x2[2]:return 1 elif x1[2]
都会给我相同的错误,我认为x.split可能遗漏了什么。。索引器错误:列出索引超出范围您可能有一行只有一列,以查看数据中d的哪个执行
:if len(d)
from operator import itemgetter
data.sort(key=itemgetter(2))
def get2(x):
    return x[2]
def compare(x1,x2):
    if x1[2] > x2[2]:
       return 1
    elif x1[2] < x2[2]:
       return -1
    else:
       return 0
data.sort(cmp=compare)