Can someone tell me what's happening here. This is my code:
PUNCT_SPACE_SET = set(string.punctuation + string.whitespace) def filter_letters(original): return ''.join(set(original) - PUNCT_SPACE_SET) 'original' is a string. The above works as expected, but when I change it to return ''.join(set(original.upper()) - PUNCT_SPACE_SET) it doesn't seem to work. The full code is below if it helps to understand. import string import random import itertools PUNCT_SPACE_SET = set(string.punctuation + string.whitespace) def convert_quote(quote): return encrypt_quote(quote).split('|') def encrypt_quote(original): original_letters = filter_letters(original) new_letters = list(string.ascii_uppercase) while True: random.shuffle(new_letters) trans_letters = ''.join(new_letters)[:len(original_letters)] if test_code(original_letters, trans_letters): trans_table = string.maketrans(original_letters, trans_letters) break return original.translate(trans_table) def filter_letters(original): return ''.join(set(original) - PUNCT_SPACE_SET) #return ''.join(set(original.upper()) - PUNCT_SPACE_SET) def test_code(original_letters, trans_letters): for pair in itertools.izip(original_letters, trans_letters): if pair[0] == pair[1]: return False return True if __name__ == '__main__': print convert_quote("The past is not dead. In fact, it's not even past.|William Faulkner") -- http://mail.python.org/mailman/listinfo/python-list