Вариант ответа @Primusa без использования обновления:
from collections import Counter
words = ["tree", "bone", "indigo", "developer"]
counts = Counter(c for word in words for c in set(word.lower()) if c.isalpha())
Вывод
Counter({'e': 3, 'o': 3, 'r': 2, 'd': 2, 'n': 2, 'p': 1, 'i': 1, 'b': 1, 'v': 1, 'g': 1, 'l': 1, 't': 1})
В основном преобразует каждое слово в набор, а затем выполняет итерацию по каждому множество.
Ваше представление о HTML-чувствительных символах - хорошее начало. Мне также нравится использовать символы, которые можно читать, но которые все еще являются Unicode. Когда я проводил подобное тестирование для tabblo.com, я использовал эту строку:
Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!
В ней есть HTML-чувствительные символы, ASCII, верхняя половина символов ISO и многобайтовые символы Unicode.
Ну, это немного грубый подход, но если вы хотите начать с какого-то хорошо сформированного Юникода и добавить некоторые ошибки, здесь есть большой ресурс для реальных вещей: http: // www. unicode.org/charts.
Тестирование в Турции!
http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html
Это действительно красиво расширенное тестирование интернационализации, не для слабонервных, включая форматирование даты, вычисление процентов, перевод в верхний / нижний регистр и т. д.
Эти смайлы с SuperUser.com тоже неплохо подходят для тестирования поддержки юникода ...
https://superuser.com/questions/52671/how-do-i- create-unicode-smilies-like