¿Cuál es la forma más pitónica de aplicar una función en cada palabra en una cadena con múltiples tipos de espacios en blanco?

Supongamos que tengo una función

def f(a):
  return a[::-1]

Quiero aplicar la función f a cada palabra en una cadena. Si la cadena consta solo de espacios, puedo hacer

>>> s = '   this  is a banana   '
>>> ' '.join(map(f, s.split(' ')))
'   siht  si a ananab   '

Pero, ¿cómo puedo hacer esto cuando la cadena consta de múltiples tipos de espacios en blanco? (por ejemplo, \ t y \ n)

Por ejemplo, quiero cambiar

'\t  \t this  is a\tbanana   \n'

a

'\t  \t siht  si a\tananab   \n'

Respuestas a la pregunta(2)

Su respuesta a la pregunta