如何在python中根据文本文件中的特定列对行进行排序

2024-05-16 03:24:09 发布

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

我试图根据特定的列按节对文本文件中的数据进行排序,但没有得到任何解决方案。数据格式如下:

Section-1:
0  2
5  3
3  0
0  5
3  5
Section-2:
1  4
3  2
1  3
0  11
Section-3:
12  8
0   6
3   0
12  0
0   3
....

现在我想对每个部分的第1列应用sort,我已经尝试了很多,但没有得到任何解决方案。如果有人帮助我,我会非常感激的

提前谢谢


Tags: 数据排序section解决方案sort数据格式文本文件我会
1条回答
网友
1楼 · 发布于 2024-05-16 03:24:09

可以使用正则表达式查找文本中的块:

import re 

with open(your_file, r) as f:
    blocks=re.findall(r'^(Section.*)\n([\s\S]*?(?=^Section|\Z))', f.read(), flags=re.M)

Demo of the regex

然后对块进行排序并打印:

for h,s in blocks:
    print h
    print '\n'.join(sorted(s.splitlines(), key=lambda l:tuple(map(int,l.split()))))

假设您希望按第一个数字和第二个数字排序,以便1 4位于1 3之后。如果只想按第一个数字排序,而不想根据第二个数字更改行的顺序,则可以执行以下操作:

for h,s in blocks:
    print h
    print '\n'.join(sorted(s.splitlines(), key=lambda l:int(l.split()[0])))

相关问题 更多 >