import glob import re #regex = re.compile(r"( *)def defineCharacteristics(self):\n(\s*)self.name, self.i18n_name = self.trAlgorithm\('(.*)'\)\n(\s*)self.group, self.i18n_group = self.trAlgorithm\('(.*)'\)", re.MULTILINE) regex = re.compile(r"^(.*)(\s*def name)", re.M | re.DOTALL) regex2 = re.compile(r"", re.M | re.DOTALL) regex = re.compile(r"^(.*?)(\s*def name.*)def defineCharacteristics\(self\):\s*\n(.*?)(\s*def .*)$", re.M | re.DOTALL) #regex = re.compile(r"(\s*)def defineCharacteristics(self):", re.MULTILINE) for filename in glob.iglob('./**/*.py', recursive=True): out = None with open(filename, 'r') as myfile: data = myfile.read() r = regex.search(data) if r: out = r.groups()[0] out += '\n\n def __init__(self):\n super().__init__()\n' out += r.groups()[2] out += r.groups()[1] out += r.groups()[3] print(out) #r2=regex2.search(data) #if r2: # print(r2.groups()[1]) # print('-0-----') # print(r2.groups()[2]) #d=regex.sub(r"\1def name(self):\n\2return '\3'\n\n\1def group(self):\n\2return '\5'\n\n\1def defineCharacteristics(self):",data) #d=regex.sub(r"\1def defineCharacteristics(self)",data) if out: with open(filename, 'w') as myfile: myfile.write(out) if False: d = r.group() # print(r.groups()) #print(d) d = regex.sub(r"\1def name(self):\n\2return '\3'\n\n\1def group(self):\n\2return '\5'\n", d) print(d) # def group(self): # return '[GDAL] Analysis' d)