如何显示Unicode数值属性

发布于 2021-01-29 17:08:07

'\u00BD' # ½
'\u00B2' # ²

我试图更好地理解isdecimal()和isdigit(),因为这对于理解unicode数值属性是必要的。我如何看待上面两个unicode的数值属性。

关注者
0
被浏览
39
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    要获取字符中包含的“数字值”,可以使用unicodedata.numeric()function

    >>> import unicodedata
    >>> unicodedata.numeric('\u00BD')
    0.5
    

    使用该ord()函数获取整数代码点,可以选择与结合使用format()以产生一个十六进制值:

    >>> ord('\u00BD')
    189
    >>> format(ord('\u00BD'), '04x')
    '00bd'
    

    您可以使用来访问character属性unicodedata.category(),然后需要根据记录的类别进行检查:

    >>> unicodedata('\u00DB')
    'No'
    

    其中'No'代表
    Number,Other

    但是,.isnumeric() == True类别中有一系列字符Lo;Python的unicodedata数据库只给你访问普通类和依赖str.isdigit()str.isnumeric()以及unicodedata.digit()unicodedata.numeric()等方法来处理其他类别。

    如果要精确列出所有数字Unicode字符,则规范来源是Unicode数据库;请参见Unicode数据库。定义整个标准的一系列文本文件。该DerivedNumericTypes.txt文件(第6.3.0版)为您提供了该数据库特定数字属性的“视图”;它在顶部告诉您文件是如何从标准中的其他数据文件派生的。DerivedNumericValues.txt文件的同上,列出每个代码点的确切数值。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看