使用python检测unicode私有区域字符

ale*_*xis 5 python unicode python-3.x

在python 3中识别unicode私用字符的正确方法是什么?模块中没有明显的相关性unicodedata,这使得查找字符名称和属性变得容易.

一些背景:unicodedata.name(),它给出了unicode字符的名称,将ValueError使用私有使用字符(例如,try unicodedata.name("\uf026"))调用if .但是空白字符(空间本身除外)以及可能的其他东西也会触发异常.那么检测PUA字符的非hacky,可靠方法是什么?

一二三*_*一二三 6

私人使用的人物都是在Co 普通类,如通过返回category()unicodedata:

>>> import unicodedata
>>> def is_pua(c):
...   return unicodedata.category(c) == 'Co'
...
>>> is_pua(u'\uF026')
True
Run Code Online (Sandbox Code Playgroud)

鉴于Unicode标准保证私有使用字符集永远不会更改(不会添加或删除任何字符),因此对这三个范围进行硬编码也是安全的:

  • U+E000U+F8FF
  • U+F0000U+FFFFD
  • U+100000U+10FFFD