Cutting slices
Rob Cliffe
rob.cliffe at btinternet.com
Sun Mar 5 19:36:57 EST 2023
On 05/03/2023 22:59, aapost wrote:
> On 3/5/23 17:43, Stefan Ram wrote:
>> The following behaviour of Python strikes me as being a bit
>> "irregular". A user tries to chop of sections from a string,
>> but does not use "split" because the separator might become
>> more complicated so that a regular expression will be required
>> to find it. But for now, let's use a simple "find":
>> |>>> s = 'alpha.beta.gamma'
>> |>>> s[ 0: s.find( '.', 0 )]
>> |'alpha'
>> |>>> s[ 6: s.find( '.', 6 )]
>> |'beta'
>> |>>> s[ 11: s.find( '.', 11 )]
>> |'gamm'
>> |>>>
>>
>> . The user always inserted the position of the previous find plus
>> one to start the next "find", so he uses "0", "6", and "11".
>> But the "a" is missing from the final "gamma"!
>> And it seems that there is no numerical value at all that
>> one can use for "n" in "string[ 0: n ]" to get the whole
>> string, isn't it?
>>
>>
>
The final `find` returns -1 because there is no separator after 'gamma'.
So you are asking for
s[ 11 : -1]
which correctly returns 'gamm'.
You need to test for this condition.
Alternatively you could ensure that there is a final separator:
s = 'alpha.beta.gamma.'
but you would still need to test when the string was exhausted.
Best wishes
Rob Cliffe
More information about the Python-list
mailing list