import string # Charsets for code 39 REF = ( tuple(string.digits) + tuple(string.ascii_uppercase) + ("-", ".", " ", "$", "/", "+", "%") ) B = "1" E = "0" CODES = ( "101000111011101", "111010001010111", "101110001010111", "111011100010101", "101000111010111", "111010001110101", "101110001110101", "101000101110111", "111010001011101", "101110001011101", "111010100010111", "101110100010111", "111011101000101", "101011100010111", "111010111000101", "101110111000101", "101010001110111", "111010100011101", "101110100011101", "101011100011101", "111010101000111", "101110101000111", "111011101010001", "101011101000111", "111010111010001", "101110111010001", "101010111000111", "111010101110001", "101110101110001", "101011101110001", "111000101010111", "100011101010111", "111000111010101", "100010111010111", "111000101110101", "100011101110101", "100010101110111", "111000101011101", "100011101011101", "100010001000101", "100010001010001", "100010100010001", "101000100010001", ) EDGE = "100010111011101" MIDDLE = "0" # MAP for assigning every symbol (REF) to (reference number, barcode) MAP = dict(zip(REF, enumerate(CODES)))