Hi Eriksson, It's nice to see people actually contribute what they've learned back to the community. Great problem, well thought out solution and congrats on the learning :)
I can't say per say that I've actually run into a situation where I need to sort file paths in this way ... But if I do I'll be sure to use your function :) --JamesMills On Tue, Dec 2, 2008 at 6:36 PM, Eriksson, John <[EMAIL PROTECTED]> wrote: > 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: [EMAIL PROTECTED] > > www.logica.se > > > > > > -- > http://mail.python.org/mailman/listinfo/python-list > > -- -- -- "Problems are solved by method" -- http://mail.python.org/mailman/listinfo/python-list