如何显示Unicode数值属性
'\u00BD' # ½
'\u00B2' # ²
我试图更好地理解isdecimal()和isdigit(),因为这对于理解unicode数值属性是必要的。我如何看待上面两个unicode的数值属性。
-
要获取字符中包含的“数字值”,可以使用
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'
但是,
.isnumeric() == True
类别中有一系列字符Lo
;Python的unicodedata
数据库只给你访问普通类和依赖str.isdigit()
,str.isnumeric()
以及unicodedata.digit()
,unicodedata.numeric()
等方法来处理其他类别。如果要精确列出所有数字Unicode字符,则规范来源是Unicode数据库;请参见Unicode数据库。定义整个标准的一系列文本文件。该
DerivedNumericTypes.txt
文件(第6.3.0版)为您提供了该数据库特定数字属性的“视图”;它在顶部告诉您文件是如何从标准中的其他数据文件派生的。DerivedNumericValues.txt
文件的同上,列出每个代码点的确切数值。