Python: Is there an equivalent of mid, right, and left from BASIC?

Python: Is there an equivalent of mid, right, and left from BASIC?

slices to the rescue 🙂

def left(s, amount):
    return s[:amount]

def right(s, amount):
    return s[-amount:]

def mid(s, offset, amount):
    return s[offset:offset+amount]

If I remember my QBasic, right, left and mid do something like this:

>>> s = 123456789
>>> s[-2:]
89
>>> s[:2]
12
>>> s[4:6]
56

http://www.angelfire.com/scifi/nightcode/prglang/qbasic/function/strings/left_right.html

Python: Is there an equivalent of mid, right, and left from BASIC?

Thanks Andy W

I found that the mid() did not quite work as I expected and I modified as follows:

def mid(s, offset, amount):
    return s[offset-1:offset+amount-1]

I performed the following test:

print([1]23, mid(123, 1, 1))
print(1[2]3, mid(123, 2, 1))
print(12[3], mid(123, 3, 1))
print([12]3, mid(123, 1, 2))
print(1[23], mid(123, 2, 2))

Which resulted in:

[1]23 1
1[2]3 2
12[3] 3
[12]3 12
1[23] 23

Which was what I was expecting. The original mid() code produces this:

[1]23 2
1[2]3 3
12[3] 
[12]3 23
1[23] 3

But the left() and right() functions work fine. Thank you.

Leave a Reply

Your email address will not be published. Required fields are marked *