Как насчет этого:
import unicodedata
def strip_accents(s):
return ''.join(c for c in unicodedata.normalize('NFD', s)
if unicodedata.category(c) != 'Mn')
Это работает над греческими буквами, также:
>>> strip_accents(u"A \u00c0 \u0394 \u038E")
u'A A \u0394 \u03a5'
>>>
символьная категория "Mn" обозначает Nonspacing_Mark
, который подобен unicodedata.combining в ответе MiniQuark (я не думал о unicodedata.combining, но это - вероятно, лучшее решение, потому что это более явно).
И имеют в виду, эти манипуляции могут значительно изменить значение текста. Диакритические знаки, Умляуты и т.д. не являются "художественным оформлением".
Обновленное сообщение
Facebook представил презентации говорят об их использовании данных. Все предполагают, что они первопроходцы в управлении большими данными , что в наши дни является модным словом. Но на самом деле их презентация называлась Lots and Lots of Small Data . То есть они в основном пишут множество запросов для чтения или записи отдельных записей. Это чрезмерное упрощение, но похоже, что их база данных SQL - это огромное хранилище ключей / значений. Одним из аспектов этой архитектуры является то, что она упрощает для них обмен данными SQL с копиями в memcached.
Facebook широко использует MySQL и вносит исправления в проект MySQL. У них есть общедоступный сайт Launchpad под названием mysqlatfacebook , а также сайт в Facebook под названием MySQLatFacebook .
Для распределенных данных они используют нереляционную технологию под названием Map / Reduce , включенный в проект Hadoop . Они создали проект под названием Hive для запроса данных с помощью языка, подобного SQL. Они также используют другие специализированные технологии управления данными для конкретных систем.
Поскольку они всегда вводят новшества и вынуждены наращивать масштаб все больше и больше, они регулярно изобретают или внедряют другие технологии для управления данными.
Проверьте: