有一些unicode字符可以简化为ascii而不会丢失太多。
示例:
>>> unicodedata.name(u'-')
'HYPHEN-MINUS'
>>> unicodedata.name(u'−')
'MINUS SIGN'
在上述情况下,我更喜欢“HYPHEN-MINUS”,因为“MINUS SIGN”不是ascii。
我可以轻松地编写自己的翻译器,但我不喜欢重新发明轮子。
有没有更简单的方法将特殊的unicode字符转换为简单的ascii字符?
我知道这是猜测,只适用于某些unicode字符,但在这种情况下也没问题。
答案 0 :(得分:2)
这可能不是一个完美的答案。 Unicode联盟有草案TR36来处理unicode(不仅仅是ASCII)中的字符相似性。
您可以搜索开发人员尽最大努力映射它们的python模块。对类似的ascii字符和符号unicode字符can be found here进行概念验证。 (由于字体问题,某些字符或符号可能会被浏览器显示为方框)
您可以使用这些python confusable homoglyphs包。文档显示为here。
from confusable_homoglyphs import confusables
confusables.is_confusable.is_confusable("-")
结果
[{'homoglyphs':[{'c':' - ','n':'HYPHEN'},{'c':' - ','n': '非破坏性','{c':' - ','n':'形象DASH'},{'c':' - ', 'n':'EN DASH'},{'c':'﹘','n':'SMALL EM DASH'},{'c': '\ u200e。\ u200e','n':'阿拉伯语完全停止'},{'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'}],'别名':'常见', 'character':' - '}]
现在你需要决定哪个是你喜欢的重映射。如果您想从库中获取一些概念,请查看源代码。
答案 1 :(得分:1)
这里有关于unicode字符命名不一致的有用信息: Python library to translate multi-byte characters into 7-bit ASCII in Python 和这里: Translating multi-byte characters into 7-bit ASCII in Python
但是为了回答你的问题,看起来没有用于将多字节unicode转换为ascii的标准库。如果您还没有自己的解决方案,请参阅第二个链接。