Подход со встроенными модулями:
# file_contents = file.read() or similar, as long as it's a string.
for find, replacement in dict1.items():
file_contents.replace(find, replacement)
Обратите внимание, что замены в этом случае никогда не должны появляться и в ключах словаря, иначе они будут заменены более поздними итерациями l oop.
В качестве альтернативы с регулярным выражением:
import re
# ...
# Make a function that picks what to replace with.
def feed_level(match_obj):
# Use the capture group (see regex below) as key for the dictionary.
return dict1[match_obj.group(0)]
re.sub(r'col_id="(.*?)"', feed_level, file_contents)
Это не имеет того же ограничения, что и другой подход выше. Обе возможности позволяют расширять словарь в любое время без необходимости изменять этот код, когда вы это делаете.