我想在处理 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。
你们很亲近!您只需要更改排序键:
import re
file_names = sorted(l, key=lambda el: int(re.search(r"SITE(\d+)", el).group(1)))
这里我们说我们想找到“SITE”,然后是任意数量的数字。我们使用方括号为这些数字分组,因此我们可以使用
.group(1)
访问它