Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #37645 > unrolled thread

Re: using split for a string : error

Started byChris Angelico <rosuav@gmail.com>
First post2013-01-25 12:11 +1100
Last post2013-01-25 12:11 +1100
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: using split for a string : error Chris Angelico <rosuav@gmail.com> - 2013-01-25 12:11 +1100

#37645 — Re: using split for a string : error

FromChris Angelico <rosuav@gmail.com>
Date2013-01-25 12:11 +1100
SubjectRe: using split for a string : error
Message-ID<mailman.1026.1359076304.2939.python-list@python.org>
On Fri, Jan 25, 2013 at 12:03 PM, Oscar Benjamin
<oscar.j.benjamin@gmail.com> wrote:
> On 24 January 2013 11:35, Chris Angelico <rosuav@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

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web