Si vous voulez trier le chemin naturellement (trier selon les nombres), vous pouvez mettre une expression lambda dans key
comme indiqué ci-dessous.
natsorted(list(pathlib.Path(chemin).glob("*")),key=lambda x:x.name)
Le côté suivant
Il était nécessaire de trier les données d'image lors de la conversion d'un grand nombre d'images en PDF. Le nom du fichier image ressemble à ceci.
1.jpg
200.jpg
12.jpg
...
Je veux les organiser en fonction des nombres, donc je veux les trier naturellement au lieu de les trier dans un dictionnaire.
Quand je l'ai eu avec pathlib
et que je l'ai trié avec natsort
, ça ressemblait à ceci.
PosixPath('/Users/usrname/images/1.jpg'),
PosixPath('/Users/usrname/images/10.jpg'),
PosixPath('/Users/usrname/images/20.jpg'),
...
Non, merci de travailler avec natsort
. J'ai pensé, mais cela ne semble pas être trié par chemin. Cependant, les contre-mesures étaient fermement inscrites dans la référence.
Extrait de la référence natsort.py
>>> a = ['apple2.50', '2.3apple']
>>> natsorted(a, key=lambda x: x.replace('apple', ''), alg=ns.REAL)
['2.3apple', 'apple2.50']
Il semble bon de spécifier «key» de la même manière que «sort». Le nom du fichier à trier est renvoyé. Ceci est bien écrit dans la référence pathlib
,
Extrait de la référence pathlib.py
>>> PurePosixPath('my/library/setup.py').name
'setup.py'
En d'autres termes, .name
peut prendre la fin du chemin. Si vous les utilisez en combinaison, vous pouvez les trier.
La formule est omise car elle se trouve au début. Quand j'ai essayé de l'utiliser, ça ressemblait à ça.
PosixPath('/Users/usrname/images/1.jpg'),
PosixPath('/Users/usrname/images/2.jpg'),
PosixPath('/Users/usrname/images/3.jpg'),
...
C'était bien trié. Toutes nos félicitations
Recommended Posts