If you limit yourself to the West Europe languages, you can just go with the stdlib:
>>> import unicodedata
>>> print( unicodedata.normalize('NFKD', "éèêàùçÇ").encode('ascii','ignore'))
eeeaucC
But if you need to project (transliterate to ascii) Arabic, Russian or Chinese, unidecode is close to black magic:
>>> from unidecode import unidecode
>>> unidecode("北亰")
'Bei Jing '
Anyway, always remember that str.encode(), str.decode(), open() and many other related callables have an "errors" parameters that allow you to deal with unkown solutions when encoding or decoding:
>>> print("Père Noël".encode("ascii", errors="ignore"))
b'Pre Nol'
>>> print("Père Noël".encode("ascii", errors="replace"))
b'P?re No?l'
I'll conclude with the mandatory "use Python 3" (3.7 if you can, it has many utf8 fixes:
https://vstinner.github.io/posix-locale.html), since you'll be in a world of pain if you deal with non-ascii in Python 2, and EOL is next year :) Tic, Toc...