On Fri, Jan 25, 2013 at 12:03 PM, Oscar Benjamin <oscar.j.benja...@gmail.com> wrote: > On 24 January 2013 11:35, Chris Angelico <ros...@gmail.com> wrote: >> >> It's usually fine to have int() complain about any non-numerics in the >> string, but I must confess, I do sometimes yearn for atoi() semantics: >> atoi("123asd") == 123, and atoi("qqq") == 0. I've not seen a >> convenient Python function for doing that. Usually it involves >> manually getting the digits off the front. All I want is to suppress >> the error on finding a non-digit. Oh well. >> > > I'm interested to know what the situations are where you want the > behaviour of atoi().
It simplifies operations on strings that contain numbers. For instance, here's a problem from yesterday. I have a set of files (MIDI files of The Rose of Persia) which have been sloppily numbered: Rose_1.mid Rose_10.mid Rose_11.mid Rose_12.mid Rose_13.mid Rose_14.mid Rose_15.mid Rose_16.mid Rose_17.mid Rose_18.mid Rose_19.mid Rose_2.mid Rose_20.mid Rose_21.mid Rose_22.mid Rose_23.mid Rose_24.mid Rose_3.mid Rose_4.mid Rose_5.mid Rose_6.mid Rose_7.mid Rose_8.mid Rose_9.mid Rose_Int.mid They're not in order. The one marked "Int" is the Introduction and should be first; then Rose_1 ... Rose_9, then Rose_10 ... Rose_24. In fact, the correct sort order is exactly: atoi(filename[5:]) Most of the time, it makes no difference. Python's int() will do exactly what atoi() does. It's only in the unusual case where they even differ. ChrisA -- http://mail.python.org/mailman/listinfo/python-list