Replace special characters with ASCII equivalent
You can get most of the way by doing:
import unicodedata
def strip_accents(text):
return ''.join(c for c in unicodedata.normalize('NFKD', text) if unicodedata.category(c) != 'Mn')
Unfortunately, there exist accented Latin letters that cannot be decomposed into an ASCII letter + combining marks. You'll have to handle them manually. These include:
- Æ → AE
- Ð → D
- Ø → O
- Þ → TH
- ß → ss
- æ → ae
- ð → d
- ø → o
- þ → th
- Œ → OE
- œ → oe
- ƒ → f
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unicodedata
text = u'Cześć'
print unicodedata.normalize('NFD', text).encode('ascii', 'ignore')