Translate Unicode to ascii (if possible)
有一些Unicode字符可以简化为ASCII而不会丢失太多。
例子:
1 2 3 4 5 | >>> unicodedata.name(u'-') 'HYPHEN-MINUS' >>> unicodedata.name(u'?') 'MINUS SIGN' |
在上面的例子中,我更喜欢"连字符-减号",因为"减号"不是ASCII码。
我可以很容易地写自己的翻译,但我不喜欢重新发明轮子。
是否没有更简单的方法将特殊的Unicode字符转换为简单的ASCII字符?
我知道这是猜测,只适用于某些Unicode字符,但在这个上下文中没关系。
这可能不是完美的答案。Unicode联盟有草案TR36来处理Unicode中的字符相似性(不仅仅是ASCII)。
您可以搜索开发人员尽最大努力映射它们的python模块。这里可以找到类似于ASCII字符和符号Unicode字符的概念证明同形符号攻击。(由于字体问题,浏览器可能会将某些字符或符号显示为方框)
您可以使用这些python可混淆的同形符号包。此处显示文档。
1 2 | from confusable_homoglyphs import confusables confusables.is_confusable.is_confusable("-") |
结果
[{'homoglyphs': [{'c': '‐', 'n': 'HYPHEN'}, {'c': '?', 'n':
'NON-BREAKING HYPHEN'}, {'c': '?', 'n': 'FIGURE DASH'}, {'c': '–',
'n': 'EN DASH'}, {'c': '?', 'n': 'SMALL EM DASH'}, {'c':
'\u200e?\u200e', 'n': 'ARABIC FULL STOP'}, {'c': '?', 'n': 'HYPHEN
BULLET'}, {'c': '?', 'n': 'MODIFIER LETTER MINUS SIGN'}, {'c': '?',
'n': 'MINUS SIGN'}, {'c': '?', 'n': 'HEAVY MINUS SIGN'}, {'c': '?',
'n': 'COPTIC CAPITAL LETTER DIALECT-P NI'}], 'alias': 'COMMON',
'character': '-'}]
现在你需要决定哪一个是你最好的翻拍。如果要从库中取出一些概念,请签出源代码。
这里有一些关于Unicode字符命名不一致的有用信息:python库,用于在python中将多字节字符转换为7位ASCII这里:在Python中将多字节字符转换为7位ASCII
但要回答您的问题,似乎没有将多字节Unicode转换为ASCII的标准库。如果您还没有自己的解决方案,请参阅第二个链接。