将字符串中的非标准拉丁字符转换为标准字符



我不确定是否"标准";以及";非标准";是正确的措辞,抱歉。

我基本上有一堆名字,比如:

Agit Işık
Ruşen Ünaydın
Candî Hissên

我想把它们转换成:

agit-isik
rusen-unaydin
candi-hissen

我创建了以下功能,它在大多数情况下都有效,但并不总是有效:

import unicodedata
def get_name_slug(name):
formatted_name = name.lower().replace(' ', '-')
slug =  unicodedata.normalize('NFD', formatted_name).encode('ascii', 'ignore')
return slug.decode('utf-8')

上述功能的结果是:

agit-isk
rusen-unaydn
candi-hissen

请注意Agit IşıkRuşen Ünaydın如何无法正确转换。

我错过了什么?

您可以尝试手动修复特殊情况,例如:

def get_name_slug(name):
formatted_name = name.lower().replace(' ', '-').replace('ı','i')
slug =  unicodedata.normalize('NFD', formatted_name).encode('ascii', 'ignore')
return slug.decode('utf-8')

最新更新