The "String Method" as shown in, for example:
teststring = "[Syllabus]Sociology.131.AC.Race.and.Ethnicity.in.the.United.States (Spring 2012).docx"
print teststring.replace('.', ' ')
"[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:
teststring = "[Syllabus]Sociology.131.AC.Race.and.Ethnicity.in.the.United.States (Spring 2012).docx"
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]
def f_name(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])[2]
def f_term(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])[3]
def f_ext(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])[4]
print f_type(teststring)
print f_name(teststring)
print f_term(teststring)
print f_ext(teststring)
[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:
def testfunction(f1, f2): print 'y' if f1.ftype()==f2.ftype() else 'n'
So I don't want it to be bound to one string or anything, I want to be able to use it for different strings.