Вы можете использовать это регулярное выражение:
(?<![a-zA-Z])-|-(?![a-zA-Z])
как это:
result = re.sub(r"(?<![a-zA-Z])-|-(?![a-zA-Z])", "", your_string)
# or with re.I
result = re.sub(r"(?<![a-z])-|-(?![a-z])", "", your_string, re.I)
Пояснение:
Регулярное выражение может соответствовать одной из следующих двух вещей:
-
, перед которым нет буквы: (?<![a-zA-Z])-
-
, который не имеет letter
после него: -(?![a-zA-Z])
A -
, окруженный буквами, не удовлетворяет ни одному из указанных выше требований, поэтому он не будет сопоставлен.