import re from unicodedata import normalize _punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.:]+') def slugify(text, delim='-'): """Generates an slightly worse ASCII-only slug.""" result = [] for word in _punct_re.split(text.lower()): word = normalize('NFKD', word).encode('ascii', 'ignore') word = word.decode('utf-8') if word: result.append(word) return delim.join(result) ''' > print (slugify('zażółć gęślą jaźń')) > 'zazolc-gesla-jazn' '''