def split_canonical(canonical):
    """
    Split a canonical into prefix and suffix based on value sign #

    :param canonical: the canonical to split
    :return: prefix and suffix
    """
    if '#' not in canonical:
        return canonical, ''
    if canonical.startswith('#'):
        return '', canonical[1:].strip()
    return list(map(lambda x: x.strip(), canonical.split('#')))