我想知道是否有人可以使用python库(我个人找不到)。
例如:'𝑹𝒐𝒕𝒆𝒎'应成为'Rotem'并'𝓗ëⓁ𝕝ᴏ'应该成为'HeLlo'等等...
感谢所有回答:)
很难遇到所有情况。
我的尝试:
import unicodedata
s = '𝑹𝒐𝒕𝒆𝒎'
s = '𝓗ëⓁ𝕝ᴏ'
def normalize_compatibily(s):
return unicodedata.normalize('NFKD', s)
def remove_accents(s):
return ''.join(c for c in unicodedata.normalize('NFD', s)
if unicodedata.category(c).startswith('L'))
print(s)
s = normalize_compatibily(s)
print(s)
s = remove_accents(s)
print(s)
解决一些情况。
不幸的是,对于U + 1D0F拉丁字母小写O,Unicode数据库中没有数据,这对我们有帮助。并非如此,Unicode名称unicodedata.name()
可能会有所帮助,例如使用正则表达式,但这意味着要查找所有相似的字符,并且如果字母不在名称中,它将失败。
但是还有另一个关于confusable characters的表(不在主数据库上),因此有一个Python库:https://pypi.org/project/confusables/,请参阅最后一个示例。
您可能需要混合使用这两种方法,并最终添加一些新字符,这些新字符不易混淆也不相关,但无论如何都用来替换其他字符。