如何按文件名中间的整数升序排序 CSV 文件

问题描述 投票:0回答:1

我想在处理 CSV 文件之前对其进行排序。这是文件名的格式:

4A085SHT_SITE12_TREE3_LAUB.csv
67E89SOIL_SITE9_TREE2_LAUB.csv
4BBA3DEND_SITE10TREE2_LAUB.csv

文件应按 SITE 后的整数排序,即上例中的 9、10 和 12,并忽略所有其他字符。

目前,我正在使用:

for file_name in os.listdir(folder_path):

我试过:

file_names = sorted(os.listdir(folder_path), key=lambda x: int(x.split('SITE')[1].split('.')[0])) #sort by first integer after SITE (if available)

但这会引发以下错误:

ValueError: invalid literal for int() with base 10: '10TREE2_LAUB'

所以我需要以某种方式删除那个例子中的 TREE2_LAUB。

python python-re
1个回答
1
投票

你们很亲近!您只需要更改排序键:

import re

file_names = sorted(l, key=lambda el: int(re.search(r"SITE(\d+)", el).group(1)))

这里我们说我们想找到“SITE”,然后是任意数量的数字。我们使用方括号为这些数字分组,因此我们可以使用

.group(1)

访问它
© www.soinside.com 2019 - 2024. All rights reserved.