Python3对大文件中指定字符进行排序再写入到新的文件
# 需求
需要对xxx.csv
文件中每一行的最后一个=
后边的值进行升序排序,然后按照该值升序将整行数据写入到一个新的文件xxx_new.csv
中
xxx.csv
文件内容如下
1=1,2=3,4=5,7=12
1=1,2=3,4=5,34=324675
1=1,2=3,4=5,457=5
1=1,2=3,4=5,345=57354
1=1,2=3,4=5,456=7457
1=1,2=3,4=5,345=534
1=1,2=3,4=5,456=345
1=1,2=3,4=5,67=567
1=1,2=3,4=5,567=123445
1=1,2=3,4=5,3456=6584
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 代码实现如下
import linecache
data_list = []
with open('xxx.csv', encoding='utf-8') as file1:
lineno = 0
for line in file1:
lineno += 1
num = int(line.rstrip('\n').rsplit('=')[-1])
data_list.append([lineno, num])
data_list.sort(key=lambda every_data: every_data[-1])
# print(data_list)
with open('xxx_new.csv', mode='w', encoding='utf-8') as file2:
for data in data_list:
origin_file_line_data = linecache.getline('xxx.csv', lineno=data[0])
file2.write(origin_file_line_data)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
最终生成的新文件内容如下
1=1,2=3,4=5,457=5
1=1,2=3,4=5,7=12
1=1,2=3,4=5,456=345
1=1,2=3,4=5,345=534
1=1,2=3,4=5,67=567
1=1,2=3,4=5,3456=6584
1=1,2=3,4=5,456=7457
1=1,2=3,4=5,345=57354
1=1,2=3,4=5,567=123445
1=1,2=3,4=5,34=324675
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
原始数据与结果数据进行对比
编辑 (opens new window)
上次更新: 2021/10/24, 17:58:55