#!/usr/bin/env python # encoding: utf-8 # # Copyright (c) 2010 Doug Hellmann. All rights reserved. # """Character mapping encoder """ #end_pymotw_header import codecs import string # Map every character to itself decoding_map = codecs.make_identity_dict(range(256)) # Make a list of pairs of ordinal values for the lower and upper case # letters pairs = zip([ ord(c) for c in string.ascii_lowercase], [ ord(c) for c in string.ascii_uppercase]) # Modify the mapping to convert upper to lower and lower to upper. decoding_map.update( dict( (upper, lower) for (lower, upper) in pairs) ) decoding_map.update( dict( (lower, upper) for (lower, upper) in pairs) ) # Create a separate encoding map. encoding_map = codecs.make_encoding_map(decoding_map) if __name__ == '__main__': print codecs.charmap_encode('abc.DEF', 'strict', encoding_map) print codecs.charmap_decode('abc.DEF', 'strict', decoding_map) print encoding_map == decoding_map