Регулярное выражение Python для замены незакодированных амперсандов в тексте

Я работаю с вышестоящей системой, которая иногда присылает мне текст, предназначенный для вывода HTML / XML, с незашифрованными амперсандами:

str1 = "Stay at this B&B"
str2 = "He’s going to Texas A&M"
str3 = "He’s going to a B&B and then Texas A&M"

Мне нужно заменить незакодированные амперсанды на и при сохранении тех, которые являются частью ссылок на символы или уже закодированы.

(Исправление исходной системы не является вариантом, и, поскольку текст иногда приходит частично закодированным, перекодирование всего Строка - тоже не то, что я могу сделать. Я бы просто хотел исправить эту назойливую проблему и продолжить свою жизнь)

Это регулярное выражение прекрасно ее улавливает, но у меня проблемы с синтаксисом сделать re.sub :

re.findall("&[^#|amp]", str3)

Я не знаю, как правильно заменить текст; у меня такое ощущение, что это будет связано с re.group , но это слабость мое регулярное выражение-foo.

Любая помощь приветствуется.

5
задан Scott 4 January 2012 в 17:46
поделиться