如何在Python中对txt文件的数据进行排序

2024-10-01 13:45:30 发布

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

我有设备.txt文件如下所示:

tw004:Galaxy S5:Samsung:Mobilni telefon:5
tw002:Galaxy S6:Samsung:Mobilni telefon:1
tw001:Huawei P8:Huawei:Mobilni telefon:4
tw003:Huawei P9:Huawei:Mobilni telefon:3

现在,我有了这样的代码,我必须选择如何在表中对设备进行排序(例如,按代码从tw001到tw004排序,或者按生产商的名称从A到Z排序)

^{pr2}$

怎么做?在


Tags: 文件代码txt排序galaxys6s5samsung
2条回答

您可以使用列表的^{}方法:

devices.sort()
# or if you want to sort by another field, use a key function
devices.sort(key=lambda x:int(x[4])) # sort by integer value of quantity

您应该在for循环中使用不同的变量名,以避免弄乱devices。而且,如果要按另一列排序,则需要在循环并打印之前将devices的每一行拆分成一个列表。您可能需要两个循环(打印原始for循环,以及处理每行准备排序的while循环)

旁注:对于这个用例,使用不带任何参数的.strip()会更安全,因为这将捕获前导/尾随空格,并删除'\r\n'样式的行结尾(如果文件碰巧有)。在

另外,由于您知道每一行的列表总是相同的格式,所以可以使用.format(*devices)到{a2},这可能更短或更整洁。在

试试这个。在

def formatheader():
        print(
    "Code |    Name     |   Producer    |     Description  |  Quantity   |\n"
    "  -+      -+       -+         +      -|")

def sortbycode():
    device_file = open('devices.txt', 'r')
    formatheader()
    devices = []
    for line in device_file:
        devices.append([i  for i in line.strip("\n").split(":")])
    devices.sort(key=lambda x:x[0])
    for device in devices:
      print("{0:5}|{1:13}|{2:15}|{3:18}|{4:5}".format(*device))
sortbycode()

相关问题 更多 >