Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python检测unicode专用区域字符_Python_Python 3.x_Unicode - Fatal编程技术网

用python检测unicode专用区域字符

用python检测unicode专用区域字符,python,python-3.x,unicode,Python,Python 3.x,Unicode,在Python3中识别unicode专用字符的正确方法是什么?模块unicodedata中没有明显的相关性,这使得查找字符名和属性变得很容易 一些背景:unicodedata.name(),它给出了unicode字符的名称,如果使用私用字符调用,将引发ValueError(例如,tryunicodedata.name(“\uf026”))。但空格字符(空格本身除外)和其他可能的东西也会触发异常。那么,检测PUA字符的非黑客可靠方法是什么呢?私用字符都在Co中,由unicodedata中的cate

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


一些背景:
unicodedata.name()
,它给出了unicode字符的名称,如果使用私用字符调用,将引发
ValueError
(例如,try
unicodedata.name(“\uf026”)
)。但空格字符(空格本身除外)和其他可能的东西也会触发异常。那么,检测PUA字符的非黑客可靠方法是什么呢?

私用字符都在
Co
中,由
unicodedata
中的
category()
返回:

>>> import unicodedata
>>> def is_pua(c):
...   return unicodedata.category(c) == 'Co'
...
>>> is_pua(u'\uF026')
True
考虑到Unicode标准,即专用字符集永远不会更改(不会添加或删除任何字符),硬编码也很安全:

  • U+E000
    U+F8FF
  • U+F0000
    U+FFFFD
  • U+100000
    U+10FFFD

有道理。但是真的没有一个库方法已经完成了这个简单的计算?(例如,以字符类的形式)我忘了它们也在同一个
category()
,这可能更干净一些。嗯,我已经尝试了
category()
,但是两个字母代码(
Co
对于我尝试的代码点)的含义似乎没有在
unicodedata
中记录。是否只有PUA字符具有类别
Co
?这确实是一个很好的解决方案。我自己发现了:谷歌搜索没有任何帮助,但python有一个指向数据表的指针。类别
Co
似乎仅适用于PUA代码点。(欢迎您在回答中包含这一点)。