original = 'Has two optional arguments which must be specified.' strings = [{'index': 3, 'string': 'foo'}, {'index': 7, 'string': 'bar'}, {'index': 12, 'string': 'abc'}] meta_data=[(i['index'],i['string']) for i in strings] track={} for i,j in enumerate(original): track[i]=j for k in meta_data: if k[0] in track: if track[k[0]]==' ': track[k[0]]=k[1]+' ' else: track[k[0]] = k[1] print("".join(track.values())) #Hasfoo twobar optiabcnal arguments which must be specified.