Crie carros alegóricos compactos / humanos, usando frações vulgares unicode

Existem módulos (de preferência na biblioteca padrão) que podem transformar um número flutuante em algo mais amigável ao ser humano? Talvez não seja mais amigável ao ser humano, mas pelo menos mais compacto.

por exemplo. 4.625 se tornaria "4⅝"

(Pontos de brownie de bônus por reconhecer pi com uma precisão razoável)

Esse esboço de código foi o melhor que pude apresentar:

import unicodedata

def simplify_float(number):
    vf = "VULGAR FRACTION "
    vulgars = {0.125 : unicodedata.lookup(vf + "ONE EIGHTH"),
               0.2   : unicodedata.lookup(vf + "ONE FIFTH"),
               0.25  : unicodedata.lookup(vf + "ONE QUARTER"),
               0.375 : unicodedata.lookup(vf + "THREE EIGHTHS"),
               0.4   : unicodedata.lookup(vf + "TWO FIFTHS"),
               0.5   : unicodedata.lookup(vf + "ONE HALF"),
               0.6   : unicodedata.lookup(vf + "THREE FIFTHS"),
               0.625 : unicodedata.lookup(vf + "FIVE EIGHTHS"),
               0.75  : unicodedata.lookup(vf + "THREE QUARTERS"),
               0.8   : unicodedata.lookup(vf + "FOUR FIFTHS"),
               0.875 : unicodedata.lookup(vf + "SEVEN EIGHTHS")}

    decimal = int(number)
    if number == decimal:
        return unicode(decimal)

    vulgar = vulgars.get(number - decimal)
    if vulgar:
        if decimal == 0:
            return vulgar
        return "%d%s" % (decimal, vulgar)
    return "%.1f" % number

Indo na outra direção é muito fácil usando o módulo unicodedata, mas não consegui encontrar uma boa maneira de criar essas strings em primeiro lugar.