Вот опция, использующая re.sub
. Мы можем сопоставить по следующей схеме:
(?<=\b[a-z]) (?=[a-z]\b)
и затем замените его пустой строкой, чтобы удалить целевое пространство.
input = "a b abcd a b"
output = re.sub(r'(?<=\b[a-z]) (?=[a-z]\b)', '', input)
print(output)
ab abcd ab
Используемый шаблон регулярных выражений говорит:
(?<=\b[a-z]) assert that what precedes is a single letter, which itself
is preceded by a word boundary
[ ] match a single space (brackets used for clarity only)
(?=[a-z]\b) assert that what follows is also a single letter, which again
is followed by a word boundary