С помощью регулярных выражений вы можете искать все вхождения вашей дикторной метки, которая не имеет пробела сразу после нее:
file_content = re.sub(u'\u0651[^ ]', '\u0651 ', file_content)
[^ ]
будет означать любой символ, который не является простым пробелом.
\S
также возможно вместо [^ ]
, поскольку оно будет соответствовать всему, что не является пробелом.
https://docs.python.org/2/library/re.html
[] Используется для обозначения набора символов.
Символы, которые не находятся в пределах диапазона, могут быть сопоставлены путем дополнения набора. Если первый символ набора - «^», все символы, не входящие в набор, будут сопоставлены. Например, [^ 5] будет соответствовать любому символу, кроме «5», и [^^] будет соответствовать любому символу, кроме «^». ^ не имеет специального значения, если это не первый символ в наборе.
\S
Соответствует любому символу, который не является пробельным символом. Это противоположность \ s. Если используется флаг ASCII, он становится эквивалентом [^ \ t \ n \ r \ f \ v].