将Unicode转换为ascii(如果可能)

时间:2017-04-12 10:44:36

标签: python unicode

有一些unicode字符可以简化为ascii而不会丢失太多。

示例:

>>> unicodedata.name(u'-')
'HYPHEN-MINUS'

>>> unicodedata.name(u'−')
'MINUS SIGN'

在上述情况下,我更喜欢“HYPHEN-MINUS”,因为“MINUS SIGN”不是ascii。

我可以轻松地编写自己的翻译器,但我不喜欢重新发明轮子。

有没有更简单的方法将特殊的unicode字符转换为简单的ascii字符?

我知道这是猜测,只适用于某些unicode字符,但在这种情况下也没问题。

2 个答案:

答案 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的标准库。如果您还没有自己的解决方案,请参阅第二个链接。