How to sort a list of file paths
Eriksson, John
john.eriksson at logica.com
Tue Dec 2 03:36:02 EST 2008
Hi,
This weekend I had some problems to get a list containing file paths to be sorted in a way that I could use.
I also found a thread in this mailing list ( http://mail.python.org/pipermail/python-list/2007-April/433590.html ) and realized that others might be interested in a solution.
So... here is my five cents regarding file path sorting:
Problem description:
You have a list containing some file names:
>>> file_list = ["File2.txt","File1.txt","File10.txt"]
If you sort this list in the conventional way you end up with a result like:
>>> file_list.sort()
>>> print file_list
['File1.txt','File10.txt','File2.txt']
Solution:
Sort the list by splitting alphas and digits in to groups and compare them separately.
import re
def true_alphanum_cmp(a,b):
aa = re.findall(r'\d |\D ', a)
bb = re.findall(r'\d |\D ', b)
for i in range(min(len(aa),len(bb))):
if aa[i].isdigit() and bb[i].isdigit():
c = cmp(int(aa[i]),int(bb[i]))
else:
c = cmp(aa[i],bb[i])
if c!=0:
return c
return cmp(len(aa),len(bb))
file_list = ["File2.txt","File1.txt","File10.txt"]
file_list.sort(true_alphanum_cmp)
If the formatting in this mail is messed up you can find the example at http://arainyday.se/notebook/true_alphanum_cmp.php
All comments and improvements are welcome!
Best regards
John Eriksson
_________________________________________
Logica - Releasing your potential
Tegsplan 2b
904 20 UMEÅ
Sweden
T: +46 (0) 90 15 91 38
M: +46 (0) 70 366 16 77
E: john.eriksson at logica.com<mailto:john.eriksson at logica.com>
www.logica.se<http://www.logica.se>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20081202/9a456033/attachment-0001.html>
More information about the Python-list
mailing list