# 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.