Я пытаюсь заменить текст в html-файле с помощью словаря.
Это работает, но, к сожалению, не соответствует тексту, если он окружен тегом html или имеет запятую рядом с ним:
for key in dictionary:
print(key)
if key in answer_string:
pattern = re.compile(key, re.IGNORECASE)
answer_string = re.sub(r"[^ ]*"+pattern+r"[^ ]*", "<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)
Это то, что я пробовал, но не работает. Получаю ошибку: TypeError: cannot concatenate 'str' and '_sre.SRE_Pattern' objects
for key in dictionary:
print(key)
if key in answer_string:
pattern = re.compile(key, re.IGNORECASE)
answer_string = re.sub(r"[^ ]*"+pattern+r"[^ ]*", "<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)
re.compile
возвращает объект компиляции регулярного выражения, а не строку. Вам просто нужно объединить свои строки перед компиляцией:
for key in dictionary:
print(key)
if key in answer_string:
pattern = re.compile(r"[^ ]*"+key+r"[^ ]*", re.IGNORECASE)
answer_string = pattern.sub("<a href=\"" + dictionary.get(key) + "\">" + key + "</a>", answer_string)