📜  如何使用Python在文件中按列排序?(1)

📅  最后修改于: 2023-12-03 14:52:04.329000             🧑  作者: Mango

如何使用Python在文件中按列排序?

在Python中,我们可以使用内置函数sorted()来对列表、元组等内置类型进行排序。然而,当我们需要在文件中按列排序时,我们需要先将文件中的数据读取到内存中,然后进行排序,最后再写回到文件中。在本文中,我将介绍如何使用Python在文件中按列排序。

读取文件数据

首先,我们需要打开文件并读取数据。假设我们的文件名为data.txt,它的内容如下:

apple 10
banana 5
cherry 20

我们可以使用如下代码将其读取到内存中:

with open('data.txt', 'r') as f:
    data = [line.strip().split() for line in f]

这段代码将文件的每一行读取到一个列表中,并使用split()方法将每一行按空格分割成一个列表。因此,data变量的值为:

[['apple', '10'], ['banana', '5'], ['cherry', '20']]
排序数据

接下来,我们需要对数据进行排序。如果想按第二列排序,即按数字大小排序,我们可以使用如下代码:

sorted_data = sorted(data, key=lambda x: int(x[1]))

这段代码使用sorted()函数对data进行排序,按照每一行的第二个元素,即数字大小进行排序。key参数接收一个函数,它将作为排序的依据,这里我们使用lambda表达式来定义一个函数。int(x[1])表示将每一行的第二个元素转换为整数进行比较。因此,sorted_data变量的值为:

[['banana', '5'], ['apple', '10'], ['cherry', '20']]
将排序结果写回文件

最后,我们需要将排序结果写回到文件中。我们可以使用如下代码将它写回到data.txt文件中:

with open('data.txt', 'w') as f:
    for line in sorted_data:
        f.write(' '.join(line) + '\n')

这段代码将sorted_data中的每一行使用join()方法组成一个字符串,并在末尾添加一个换行符。然后,将其写入到文件中。因此,data.txt的内容将变为:

banana 5
apple 10
cherry 20

至此,我们就完成了在文件中按列排序的操作。

完整代码如下:

with open('data.txt', 'r') as f:
    data = [line.strip().split() for line in f]

sorted_data = sorted(data, key=lambda x: int(x[1]))

with open('data.txt', 'w') as f:
    for line in sorted_data:
        f.write(' '.join(line) + '\n')