如何获取文件中每行的第一个元素并对它们进行排序?

2024-10-01 02:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的文件.txt:

('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')

('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')

('pano', 's', '01-01-19', 's', 'Aberta', 's')

我想这样分类:

('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')

('pano', 's', '01-01-19', 's', 'Aberta', 's')

('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')

也可以按以下日期排序:

('pano', 's', '01-01-19', 's', 'Aberta', 's')

('ano', 'a', '02-01-19', 'a', 'Aberta', 'a')

('sim', 'sim','03-01-19', 'sim','Fechada', 'sim')

如果有人能帮我,我将非常感激:)

我的英语很差

def ordenar():
    ficheirocompra = open("compras.txt","r")
    lines = ficheirocompra.readlines()

    for line in lines:
        a = line[0:line.find(',')]
        print(a.sort())

    ficheirocompra.close()

Tags: 文件txt排序defline分类simopen
1条回答
网友
1楼 · 发布于 2024-10-01 02:25:48

如果您已经有一个元组列表,并且希望按每个元组的第一项排序,那么.sorted.sort将完成这项工作。请记住,.sort对列表本身进行排序,而.sorted返回一个排序的列表

>>> L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
...      ('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
...      ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
...      ('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]
>>> L_namesort = sorted(L)
>>> print(L_namesort)
[('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'), ('pano', 'zz', '01-01-19', 's', 'Aberta', 's'), ('sim', 'sim', '03-01-19', 'sim', 'Fechada', 'sim'), ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z')]

另一种方法是使用key参数并选择要排序的项

def mysortingkey(item):
    return item[0]

L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
     ('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
     ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
     ('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]

L_namesort = sorted(L, key=mysortingkey)
print(L_namesort)

您可以使用相同的策略按日期排序,尽管这意味着将日期字符串转换为实际的datetime日期。否则,像“12-25-18”这样的日期将被视为“晚于”于“01-03-19”

import datetime

def thedatesort(item):
    return datetime.datetime.strptime(item[2], '%m-%d-%y')

L = [('sim', 'sim','03-01-19', 'sim','Fechada', 'sim'),
     ('ano', 'a', '12-01-19', 'a', 'Aberta', 'a'),
     ('zoom', 'z', '05-01-19', 'z', 'Yo', 'z'),
     ('pano', 'zz', '01-01-19', 's', 'Aberta', 's')]

L_datesorted = sorted(L, key=thedatesort)
print(L_datesorted)

相关问题 更多 >