#!/usr/bin/python def join(li): nli = [ x.replace('\\', '\\\\') for x in li ] nli = [ x.replace('/', '\\/') for x in nli ] return '/'.join(nli) def split(st): li = st.split('/') nli = [li[0]] for x in li[1:]: bscount = 0 if nli[-1]: while nli[-1][-1 - bscount] == '\\': bscount += 1 if bscount % 2: nli[-1] = nli[-1][:-1] + '/' + x else: nli.append(x) nli = [ x.replace('\\\\', '\\') for x in nli ] return nli if __name__ == '__main__': orig = ['foo', 'bar/baz\\/', '', 'st\\\\uff'] print ':'.join(orig) a = join(orig) print a b = split(a) print ':'.join(b)