You can't add methods to built-in types like str
.
You can, however, create a subclass of str
and add the methods you want. As a bonus, add @property
so you don't need to call the method to get the value.
class MyString(str):
@property
def f_type(f):
return f.split('/')[-1] if os.path.isdir(f) else re.split(r'(\[Syllabus\]|\[Syllabus \d+\]|\[Video\]|)(.*?)( \(Fall \d+\)| \(Spring \d+\)| \(Summer \d+\)|)(\.part\d+\.rar$|\.\w+$)', f.split('/')[-1])[1]
s = MyString(teststring)
s.f_type
Normally you'd use self
as the name for the first parameter in a method's argument list (the one that receives the reference to the instance the method is attached to). In this case I just used f
because your expression was already written to use it.
manpreet
Best Answer
2 years ago
The "String Method" as shown in, for example:
"[Syllabus]Sociology 131 AC Race and Ethnicity in the United States (Spring 2012) docx"
is fantastic and the script I'm writing involves A LOT of text manipulation, it's a lot of what I'm doing and as I add features it continues to be important.
One of the common manipulations I'm doing is:
[Syllabus] Sociology.131.AC.Race.and.Ethnicity.in.the.United.States (Spring 2012) .docx
But I'd like to be able to add: ".ftype()", ".fname()", ".fterm()", and ".fext()" methods (corresponding to these functions I have). And I have no idea how to do that.
I'd be looking to use it in a bunch of different functions in the script (so it wouldn't be class-bound or anything).
I can't even figure out what I should be google-ing. But how can I add these methods?
P.S. The names of the methods aren't really important--so if I have to change these names to keep from conflicting with built-in methods or something that's okay.
EDIT: I'm looking to be able to use this method for things like: