按数字顺序对文本文件排序(Python)
你好,, 我刚开始使用Python,对文件排序有问题。 我有多个文本格式的文件,从0到20,但当我对它们进行排序时,它们的顺序是:0,1,11,12。。。尽管有0,1,2,3。。。 我尝试了在这里找到的多种方法,但都不起作用。 你能帮帮我吗按数字顺序对文本文件排序(Python),python,sorting,Python,Sorting,你好,, 我刚开始使用Python,对文件排序有问题。 我有多个文本格式的文件,从0到20,但当我对它们进行排序时,它们的顺序是:0,1,11,12。。。尽管有0,1,2,3。。。 我尝试了在这里找到的多种方法,但都不起作用。 你能帮帮我吗 data_dir = 'Data_CO2/' folder = '01-15-2020-B/' dir_folder = data_dir+folder files = os.listdir(dir_folder) files_20 = [] for ff
data_dir = 'Data_CO2/'
folder = '01-15-2020-B/'
dir_folder = data_dir+folder
files = os.listdir(dir_folder)
files_20 = []
for ff in files:
if 'TPD' in ff:
files_20.append(ff)
files_20.sort()
files_20
Output :
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-0.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-1.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-10.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-11.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-12.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-13.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-14.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-15.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-16.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-17.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-18.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-19.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-2.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-20.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-3.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-4.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-5.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-6.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-7.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-8.DPT',
'TPD at 1K.min from 26K to 120K-CsI 335deg, 1cm-1, 64 scans -CO2 CH4 mix -01-15-2020-9.DPT'
因为
sort
是由一组字符串处理的,所以它将按字母顺序排序。如果您想根据“索引”进行排序,可以执行以下操作:
def get_index(file_name: str):
indexed_extension = file_name.split("-")[-1]
index = indexed_extension.split(".")[0]
return int(index)
接
files_20.sort(key=get_index)
这将适用于任何日期(不仅仅是
01-15-2020
)。它依赖于文件名末尾有一个-。
。相关Hi!请将代码/错误消息包含为文本,而不是图像。文件的默认排序似乎是字母顺序。我在unix comandsort
上遇到了类似的问题。我不熟悉python中的文件,但我希望在调用sort时可以传入不同的比较函数。非常感谢您的帮助!我现在明白了,谢谢@没问题,因为这个答案帮助你按下左边的绿色复选标记接受它。