Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Natural sorting (davekoelle.com)
35 points by maxwell on April 4, 2010 | hide | past | favorite | 9 comments



There is a nice "oneliner" in Ruby for that, created by Piers Cawley: http://j.mp/anfTlJ

And for python there is a nice Article on CodingHorror: http://j.mp/aCxlI3 Hope it's useful :)


Is there an easy way to get 'ls' to use this ordering?


  ls -v


Huh, so it seems! Has that been there forever, or was it added semi-recently in response to things like this post?


Available in GNU userland as `sort -V`.


Excellent post. It's focused, unbiased, simple, covers a useful problem and includes source.


You should sell this to microsoft for millions.


Is it a sarcasm?

It seems that Microsoft's StrCmpLogicalW() has exactly desired behavior. Besides it is trivial to implement:

  def natural_key(key):
      """See http://www.codinghorror.com/blog/archives/001018.html

      >>> L = 'a01 a9 b1 b10 b9'.split()
      >>> L.sort(key=natural_key)
      >>> ' '.join(L)
      'a01 a9 b1 b9 b10'
      """
      return [int(chunk) if chunk.isdigit() else chunk
              for chunk in re.split(r'(\d+)', key)]




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: