У меня была похожая проблема, и я предложил следующий код, чтобы помочь решить ее.Моя конкретная проблема заключалась в том, что мне нужно поменять некоторые части строки с соответствующей меткой.Я также хотел что-то, что можно использовать в разных местах моего приложения.
С помощью приведенного ниже кода я могу сделать следующее:
>>> string = "Let's take a trip to Paris next January"
>>> lod = [{'city':'Paris'}, {'month':'January'}]
>>> processed = TextLabeler(string, lod)
>>> processed.text
>>> Let's take a trip to [[ city ]] next [[ month ]]
Вот весь код:
class TextLabeler():
def __init__(self, text, lod):
self.text = text
self.iterate(lod)
def replace_kv(self, _dict):
"""Replace any occurrence of a value with the key"""
for key, value in _dict.iteritems():
label = """[[ {0} ]]""".format(key)
self.text = self.text.replace(value, label)
return self.text
def iterate(self, lod):
"""Iterate over each dict object in a given list of dicts, `lod` """
for _dict in lod:
self.text = self.replace_kv(_dict)
return self.text