Translate datetime format from one standard to another
The strftime function is relatively well known, even if the formatting directives are not completely standardized across platforms.  On the other hand, pickadate.js is a relatively unknown library.  It would therefore be helpful to cite its specification, preferably in a docstring.  The use of doctests would also be a good idea here.

According to the pickadate.js documentation, you should escape any “rule” characters with an exclamation mark (!).

Doing string substitutions in multiple passes is, in general, a bad idea.  Not only is it more work to traverse the string several times, there is also the possibility that operating on the output leads to incorrect results.  Fortunately, you seem to be safe here, since the pickadate.js directives don't start with % like the strftime directives.  Still, a one-pass solution is preferable, and Python gives you a way to do that with re.sub():


  re.sub(pattern, repl, string, count=0, flags=0)
  
  
    …
    
    If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
  


Using re.sub(), and handling special cases where strings that appear to be strftime and pickadate.js directives should actually be treated literally…

import re

def format_to_pickadate_format(fmt):
    """
    Convert a strftime format string to a pickadate.js template.
    http://amsul.ca/pickadate.js/date/#formats
    http://amsul.ca/pickadate.js/time/#formats

    &gt;&gt;&gt; format_to_pickadate_format('%d/%m/%Y %H:%M')
    'dd/mm/yyyy HH:i'
    &gt;&gt;&gt; format_to_pickadate_format('%Y %% d')
    'yyyy % !d'
    """
    TRANS = {
        '%d': 'dd',
        '%a': 'ddd',
        '%A': 'dddd',
        '%m': 'mm',
        '%b': 'mmm',
        '%B': 'mmmm',
        '%y': 'yy',
        '%Y': 'yyyy',
        '%H': 'HH',
        '%M': 'i',
        '%p': 'A',
    }
    return re.sub(
        r'%(.)|([^dmyhHiaA])|(.)',
        lambda m: TRANS.get(m.group(), m.group(1)) or m.group(2) or '!' + m.group(3),
        fmt
    )