# from libxmp import file_to_dict import os, sys, re mainPattern = r'\n\s+\n(?: .+<\/rdf:li>\n)*\s+<\/rdf:Bag>\n\s+<\/dc:subject>\n' subPattern = r'(.*)\n' subFormatPattern = ' {}\n' # Write tags to an XMP file, using regex patterns def writeXMP(inputPath, outputPath, tags): data = open(inputPath, 'r').read() # Detect and find the \n \n \n """ look = data.find('') + 13 data = data[:look] + addition + data[look:] match = re.search(mainPattern, data) # Get last matching tag submatch = None for submatch in re.finditer(subPattern, match.group(0)): pass # Calculate very end spanend = match.span()[0] + (submatch.span()[1] if submatch else 0) # add tags to end data = data[:spanend] + ''.join(subFormatPattern.format(tag) for tag in tags) + data[spanend:] # Write file to disk open(outputPath, 'w+').write( data)