Question: In the python interpreter:
'pradeep'.lstrip('prade') gives an output of ''.
I was expecting this to return 'ep'.
Why is that assumption wrong ?

Answer: 
`.lstrip()` removes the **set** of characters, not a word. All characters `p`, `r`, `a`, `d` and `e`, *in any order*, are removed from the start of `pradeep`. The last two characters `e` and `d` are still part of that set and are removed as well. You would get the same result if you used `.lstrip('drape')` or `.lstrip('adepr')`.

If you want to remove a word from the start, use slicing:

```
example = 'pradeep'
example[5:] if example.startswith('prade') else example

```

or, as a function:

```
def remove_start(inputstring, word_to_remove):
    return inputstring[len(word_to_remove):] if inputstring.startswith(word_to_remove) else inputstring

```

Demo:

```
>>> def remove_start(inputstring, word_to_remove):
...     return inputstring[len(word_to_remove):] if inputstring.startswith(word_to_remove) else inputstring
... 
>>> remove_start('pradeep', 'prade')
'ep'

```
As general function for str trimming:

```
def trim(s, start=None, end=None):
    ''' Trim `start` and/or `end` for str `s` '''
    if start is not None and s.startswith(start): s = s[len(start):]
    if end is not None and s.endswith(end): s = s[:-len(end)]
    return s

trim('pradeep', start='prade') # outputs 'ep'
trim('pradeep', start='pr', end='ep') # outputs 'ade'

```

or 

```
trim = lambda s, x: s.split(x, 1)[1] if s.startswith(x) else s
trim('pradeep', 'prade') # outputs 'ep'
trim('pradeep', 'ppp') # outputs 'pradeep'

```

or 

```
trim = lambda s, x: s.replace(x, '', 1) if s.startswith(x) else s
trim('pradeep', 'prade') # outputs 'ep'
trim('pradeep', 'ppp') # outputs 'pradeep'

```

or 

```
trim = lambda s, x: s[len(x):] if s.startswith(x) else s
trim('pradeep', 'prade') # outputs 'ep'
trim('pradeep', 'ppp') # outputs 'pradeep'

```