我如何将字符串中的“字母表情符号”转换为普通字母(英语)?在python

问题描述 投票:1回答:1

我想知道是否有人可以使用python库(我个人找不到)。

例如:'𝑹𝒐𝒕𝒆𝒎'应成为'Rotem''𝓗ëⓁ𝕝ᴏ'应该成为'HeLlo'等等...

感谢所有回答:)

python string utf-8 emoji lib
1个回答
0
投票

很难遇到所有情况。

我的尝试:

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/,请参阅最后一个示例。

您可能需要混合使用这两种方法,并最终添加一些新字符,这些新字符不易混淆也不相关,但无论如何都用来替换其他字符。

© www.soinside.com 2019 - 2024. All rights reserved.