Из примера видно, что вы хотите оставить пробел в начале и конце слова:
import re
input_string = "it's not easy to find a % verylongtailor % =(person who makes suits)"
print(re.sub(r'(?<=%)(\s*)(.+?)(\s*)(?=%)', r'\1____\3', input_string))
# if you want to keep the same length of the word
print(re.sub(r'(?<=%)(\s*)(.+?)(\s*)(?=%)', lambda m: '{}{}{}'.format(m.group(1), '_' * len(m.group(2)), m.group(3)), input_string))
ВЫХОД:
it's not easy to find a % ____ % =(person who makes suits)
it's not easy to find a % ______________ % =(person who makes suits)