How do you add a custom method to a built-in python datatype? For example, I'd like to implement one of the solutions from this question but be able to call it as follows:
>>> s = "A   string  with extra   whitespace"
>>> print s.strip_inner()
>>> A string with extra whitespace
So how would I define a custom .strip_inner() string method?
You can't. And you don't need to.
See Extending builtin classes in python for an alternative solution. Subclassing is the way to go here.
The built-in classes such as str are implemented in C, so you can't manipulate them. What you can do, instead, is extend the str class:
>>> class my_str(str):
...     def strip_inner(self):
...         return re.sub(r'\s{2,}', ' ', s)
... 
>>> s = my_str("A   string  with extra   whitespace")
>>> print s.strip_inner()
A string with extra whitespace
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With