unicode.isdigit()和unicode.isnumeric()方法有什么区别?
Mar*_*ers 26
在Python的3文档比Python的2文档更清晰一点:
str.isdigit()
[...]数字包括需要特殊处理的十进制字符和数字,例如兼容性上标数字.形式上,数字是具有属性值Numeric_Type = Digit或Numeric_Type = Decimal的字符.
str.isnumeric()
数字字符包括数字字符,以及具有Unicode数值属性的所有字符,例如U + 2155,VULGAR FRACTION ONE FIFTH.形式上,数字字符是具有属性值Numeric_Type = Digit,Numeric_Type = Decimal或Numeric_Type = Numeric的字符.
因此,isnumeric()另外测试Numeric_Type = Numeric.引用官方数字类型定义的历史提案:
Numeric_Type =十进制
位置十进制系统中使用的字符,标准的基数为10的基数系统,连续数字为0..9,并且是最高位数的第一个(后备存储顺序).根据定义,这些与General_Category = Decimal_Number共同扩展.Numeric_Type = 位置十进制字符的数字变量(Numeric_Type = Decimal)或其序列.这些包括超级/下标,通过添加括号,点或逗号等字符来封闭或装饰.
Numeric_Type = 具有数值的数字字符,但既不是十进制也不是数字.
所以任何字符都是数字,但不是小数或其变体.考虑分数,罗马数字,组合数字的字形以及任何非基于小数的编号系统.
那包括:
>>> import unicodedata
>>> for codepoint in range(2**16):
... chr = unichr(codepoint)
... if chr.isnumeric() and not chr.isdigit():
... print u'{:04x}: {} ({})'.format(codepoint, chr, unicodedata.name(chr, 'UNNAMED'))
...
00bc: ¼ (VULGAR FRACTION ONE QUARTER)
00bd: ½ (VULGAR FRACTION ONE HALF)
00be: ¾ (VULGAR FRACTION THREE QUARTERS)
09f4: ? (BENGALI CURRENCY NUMERATOR ONE)
09f5: ? (BENGALI CURRENCY NUMERATOR TWO)
09f6: ? (BENGALI CURRENCY NUMERATOR THREE)
09f7: ? (BENGALI CURRENCY NUMERATOR FOUR)
09f8: ? (BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR)
09f9: ? (BENGALI CURRENCY DENOMINATOR SIXTEEN)
0bf0: ? (TAMIL NUMBER TEN)
0bf1: ? (TAMIL NUMBER ONE HUNDRED)
0bf2: ? (TAMIL NUMBER ONE THOUSAND)
0c78: ? (TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR)
0c79: ? (TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR)
0c7a: ? (TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR)
0c7b: ? (TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR)
0c7c: ? (TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR)
0c7d: ? (TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR)
0c7e: ? (TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR)
0d70: ? (MALAYALAM NUMBER TEN)
0d71: ? (MALAYALAM NUMBER ONE HUNDRED)
0d72: ? (MALAYALAM NUMBER ONE THOUSAND)
0d73: ? (MALAYALAM FRACTION ONE QUARTER)
0d74: ? (MALAYALAM FRACTION ONE HALF)
0d75: ? (MALAYALAM FRACTION THREE QUARTERS)
0f2a: ? (TIBETAN DIGIT HALF ONE)
0f2b: ? (TIBETAN DIGIT HALF TWO)
0f2c: ? (TIBETAN DIGIT HALF THREE)
0f2d: ? (TIBETAN DIGIT HALF FOUR)
0f2e: ? (TIBETAN DIGIT HALF FIVE)
0f2f: ? (TIBETAN DIGIT HALF SIX)
0f30: ? (TIBETAN DIGIT HALF SEVEN)
0f31: ? (TIBETAN DIGIT HALF EIGHT)
0f32: ? (TIBETAN DIGIT HALF NINE)
0f33: ? (TIBETAN DIGIT HALF ZERO)
1372: ? (ETHIOPIC NUMBER TEN)
1373: ? (ETHIOPIC NUMBER TWENTY)
1374: ? (ETHIOPIC NUMBER THIRTY)
1375: ? (ETHIOPIC NUMBER FORTY)
1376: ? (ETHIOPIC NUMBER FIFTY)
1377: ? (ETHIOPIC NUMBER SIXTY)
1378: ? (ETHIOPIC NUMBER SEVENTY)
1379: ? (ETHIOPIC NUMBER EIGHTY)
137a: ? (ETHIOPIC NUMBER NINETY)
137b: ? (ETHIOPIC NUMBER HUNDRED)
137c: ? (ETHIOPIC NUMBER TEN THOUSAND)
16ee: ? (RUNIC ARLAUG SYMBOL)
16ef: ? (RUNIC TVIMADUR SYMBOL)
16f0: ? (RUNIC BELGTHOR SYMBOL)
17f0: ? (KHMER SYMBOL LEK ATTAK SON)
17f1: ? (KHMER SYMBOL LEK ATTAK MUOY)
17f2: ? (KHMER SYMBOL LEK ATTAK PII)
17f3: ? (KHMER SYMBOL LEK ATTAK BEI)
17f4: ? (KHMER SYMBOL LEK ATTAK BUON)
17f5: ? (KHMER SYMBOL LEK ATTAK PRAM)
17f6: ? (KHMER SYMBOL LEK ATTAK PRAM-MUOY)
17f7: ? (KHMER SYMBOL LEK ATTAK PRAM-PII)
17f8: ? (KHMER SYMBOL LEK ATTAK PRAM-BEI)
17f9: ? (KHMER SYMBOL LEK ATTAK PRAM-BUON)
2150: ? (VULGAR FRACTION ONE SEVENTH)
2151: ? (VULGAR FRACTION ONE NINTH)
2152: ? (VULGAR FRACTION ONE TENTH)
2153: ? (VULGAR FRACTION ONE THIRD)
2154: ? (VULGAR FRACTION TWO THIRDS)
2155: ? (VULGAR FRACTION ONE FIFTH)
2156: ? (VULGAR FRACTION TWO FIFTHS)
2157: ? (VULGAR FRACTION THREE FIFTHS)
2158: ? (VULGAR FRACTION FOUR FIFTHS)
2159: ? (VULGAR FRACTION ONE SIXTH)
215a: ? (VULGAR FRACTION FIVE SIXTHS)
215b: ? (VULGAR FRACTION ONE EIGHTH)
215c: ? (VULGAR FRACTION THREE EIGHTHS)
215d: ? (VULGAR FRACTION FIVE EIGHTHS)
215e: ? (VULGAR FRACTION SEVEN EIGHTHS)
215f: ? (FRACTION NUMERATOR ONE)
2160: ? (ROMAN NUMERAL ONE)
2161: ? (ROMAN NUMERAL TWO)
2162: ? (ROMAN NUMERAL THREE)
2163: ? (ROMAN NUMERAL FOUR)
2164: ? (ROMAN NUMERAL FIVE)
2165: ? (ROMAN NUMERAL SIX)
2166: ? (ROMAN NUMERAL SEVEN)
2167: ? (ROMAN NUMERAL EIGHT)
2168: ? (ROMAN NUMERAL NINE)
2169: ? (ROMAN NUMERAL TEN)
216a: ? (ROMAN NUMERAL ELEVEN)
216b: ? (ROMAN NUMERAL TWELVE)
216c: ? (ROMAN NUMERAL FIFTY)
216d: ? (ROMAN NUMERAL ONE HUNDRED)
216e: ? (ROMAN NUMERAL FIVE HUNDRED)
216f: ? (ROMAN NUMERAL ONE THOUSAND)
2170: ? (SMALL ROMAN NUMERAL ONE)
2171: ? (SMALL ROMAN NUMERAL TWO)
2172: ? (SMALL ROMAN NUMERAL THREE)
2173: ? (SMALL ROMAN NUMERAL FOUR)
2174: ? (SMALL ROMAN NUMERAL FIVE)
2175: ? (SMALL ROMAN NUMERAL SIX)
2176: ? (SMALL ROMAN NUMERAL SEVEN)
2177: ? (SMALL ROMAN NUMERAL EIGHT)
2178: ? (SMALL ROMAN NUMERAL NINE)
2179: ? (SMALL ROMAN NUMERAL TEN)
217a: ? (SMALL ROMAN NUMERAL ELEVEN)
217b: ? (SMALL ROMAN NUMERAL TWELVE)
217c: ? (SMALL ROMAN NUMERAL FIFTY)
217d: ? (SMALL ROMAN NUMERAL ONE HUNDRED)
217e: ? (SMALL ROMAN NUMERAL FIVE HUNDRED)
217f: ? (SMALL ROMAN NUMERAL ONE THOUSAND)
2180: ? (ROMAN NUMERAL ONE THOUSAND C D)
2181: ? (ROMAN NUMERAL FIVE THOUSAND)
2182: ? (ROMAN NUMERAL TEN THOUSAND)
2185: ? (ROMAN NUMERAL SIX LATE FORM)
2186: ? (ROMAN NUMERAL FIFTY EARLY FORM)
2187: ? (ROMAN NUMERAL FIFTY THOUSAND)
2188: ? (ROMAN NUMERAL ONE HUNDRED THOUSAND)
2189: ? (VULGAR FRACTION ZERO THIRDS)
2469: ? (CIRCLED NUMBER TEN)
246a: ? (CIRCLED NUMBER ELEVEN)
246b: ? (CIRCLED NUMBER TWELVE)
246c: ? (CIRCLED NUMBER THIRTEEN)
246d: ? (CIRCLED NUMBER FOURTEEN)
246e: ? (CIRCLED NUMBER FIFTEEN)
246f: ? (CIRCLED NUMBER SIXTEEN)
2470: ? (CIRCLED NUMBER SEVENTEEN)
2471: ? (CIRCLED NUMBER EIGHTEEN)
2472: ? (CIRCLED NUMBER NINETEEN)
2473: ? (CIRCLED NUMBER TWENTY)
247d: ? (PARENTHESIZED NUMBER TEN)
247e: ? (PARENTHESIZED NUMBER ELEVEN)
247f: ? (PARENTHESIZED NUMBER TWELVE)
2480: ? (PARENTHESIZED NUMBER THIRTEEN)
2481: ? (PARENTHESIZED NUMBER FOURTEEN)
2482: ? (PARENTHESIZED NUMBER FIFTEEN)
2483: ? (PARENTHESIZED NUMBER SIXTEEN)
2484: ? (PARENTHESIZED NUMBER SEVENTEEN)
2485: ? (PARENTHESIZED NUMBER EIGHTEEN)
2486: ? (PARENTHESIZED NUMBER NINETEEN)
2487: ? (PARENTHESIZED NUMBER TWENTY)
2491: ? (NUMBER TEN FULL STOP)
2492: ? (NUMBER ELEVEN FULL STOP)
2493: ? (NUMBER TWELVE FULL STOP)
2494: ? (NUMBER THIRTEEN FULL STOP)
2495: ? (NUMBER FOURTEEN FULL STOP)
2496: ? (NUMBER FIFTEEN FULL STOP)
2497: ? (NUMBER SIXTEEN FULL STOP)
2498: ? (NUMBER SEVENTEEN FULL STOP)
2499: ? (NUMBER EIGHTEEN FULL STOP)
249a: ? (NUMBER NINETEEN FULL STOP)
249b: ? (NUMBER TWENTY FULL STOP)
24eb: ? (NEGATIVE CIRCLED NUMBER ELEVEN)
24ec: ? (NEGATIVE CIRCLED NUMBER TWELVE)
24ed: ? (NEGATIVE CIRCLED NUMBER THIRTEEN)
24ee: ? (NEGATIVE CIRCLED NUMBER FOURTEEN)
24ef: ? (NEGATIVE CIRCLED NUMBER FIFTEEN)
24f0: ? (NEGATIVE CIRCLED NUMBER SIXTEEN)
24f1: ? (NEGATIVE CIRCLED NUMBER SEVENTEEN)
24f2: ? (NEGATIVE CIRCLED NUMBER EIGHTEEN)
24f3: ? (NEGATIVE CIRCLED NUMBER NINETEEN)
24f4: ? (NEGATIVE CIRCLED NUMBER TWENTY)
24fe: ? (DOUBLE CIRCLED NUMBER TEN)
277f: ? (DINGBAT NEGATIVE CIRCLED NUMBER TEN)
2789: ? (DINGBAT CIRCLED SANS-SERIF NUMBER TEN)
2793: ? (DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN)
2cfd: ? (COPTIC FRACTION ONE HALF)
3007: ? (IDEOGRAPHIC NUMBER ZERO)
3021: ? (HANGZHOU NUMERAL ONE)
3022: ? (HANGZHOU NUMERAL TWO)
3023: ? (HANGZHOU NUMERAL THREE)
3024: ? (HANGZHOU NUMERAL FOUR)
3025: ? (HANGZHOU NUMERAL FIVE)
3026: ? (HANGZHOU NUMERAL SIX)
3027: ? (HANGZHOU NUMERAL SEVEN)
3028: ? (HANGZHOU NUMERAL EIGHT)
3029: ? (HANGZHOU NUMERAL NINE)
3038: ? (HANGZHOU NUMERAL TEN)
3039: ? (HANGZHOU NUMERAL TWENTY)
303a: ? (HANGZHOU NUMERAL THIRTY)
3192: ? (IDEOGRAPHIC ANNOTATION ONE MARK)
3193: ? (IDEOGRAPHIC ANNOTATION TWO MARK)
3194: ? (IDEOGRAPHIC ANNOTATION THREE MARK)
3195: ? (IDEOGRAPHIC ANNOTATION FOUR MARK)
3220: ? (PARENTHESIZED IDEOGRAPH ONE)
3221: ? (PARENTHESIZED IDEOGRAPH TWO)
3222: ? (PARENTHESIZED IDEOGRAPH THREE)
3223: ? (PARENTHESIZED IDEOGRAPH FOUR)
3224: ? (PARENTHESIZED IDEOGRAPH FIVE)
3225: ? (PARENTHESIZED IDEOGRAPH SIX)
3226: ? (PARENTHESIZED IDEOGRAPH SEVEN)
3227: ? (PARENTHESIZED IDEOGRAPH EIGHT)
3228: ? (PARENTHESIZED IDEOGRAPH NINE)
3229: ? (PARENTHESIZED IDEOGRAPH TEN)
3251: ? (CIRCLED NUMBER TWENTY ONE)
3252: ? (CIRCLED NUMBER TWENTY TWO)
3253: ? (CIRCLED NUMBER TWENTY THREE)
3254: ? (CIRCLED NUMBER TWENTY FOUR)
3255: ? (CIRCLED NUMBER TWENTY FIVE)
3256: ? (CIRCLED NUMBER TWENTY SIX)
3257: ? (CIRCLED NUMBER TWENTY SEVEN)
3258: ? (CIRCLED NUMBER TWENTY EIGHT)
3259: ? (CIRCLED NUMBER TWENTY NINE)
325a: ? (CIRCLED NUMBER THIRTY)
325b: ? (CIRCLED NUMBER THIRTY ONE)
325c: ? (CIRCLED NUMBER THIRTY TWO)
325d: ? (CIRCLED NUMBER THIRTY THREE)
325e: ? (CIRCLED NUMBER THIRTY FOUR)
325f: ? (CIRCLED NUMBER THIRTY FIVE)
3280: ? (CIRCLED IDEOGRAPH ONE)
3281: ? (CIRCLED IDEOGRAPH TWO)
3282: ? (CIRCLED IDEOGRAPH THREE)
3283: ? (CIRCLED IDEOGRAPH FOUR)
3284: ? (CIRCLED IDEOGRAPH FIVE)
3285: ? (CIRCLED IDEOGRAPH SIX)
3286: ? (CIRCLED IDEOGRAPH SEVEN)
3287: ? (CIRCLED IDEOGRAPH EIGHT)
3288: ? (CIRCLED IDEOGRAPH NINE)
3289: ? (CIRCLED IDEOGRAPH TEN)
32b1: ? (CIRCLED NUMBER THIRTY SIX)
32b2: ? (CIRCLED NUMBER THIRTY SEVEN)
32b3: ? (CIRCLED NUMBER THIRTY EIGHT)
32b4: ? (CIRCLED NUMBER THIRTY NINE)
32b5: ? (CIRCLED NUMBER FORTY)
32b6: ? (CIRCLED NUMBER FORTY ONE)
32b7: ? (CIRCLED NUMBER FORTY TWO)
32b8: ? (CIRCLED NUMBER FORTY THREE)
32b9: ? (CIRCLED NUMBER FORTY FOUR)
32ba: ? (CIRCLED NUMBER FORTY FIVE)
32bb: ? (CIRCLED NUMBER FORTY SIX)
32bc: ? (CIRCLED NUMBER FORTY SEVEN)
32bd: ? (CIRCLED NUMBER FORTY EIGHT)
32be: ? (CIRCLED NUMBER FORTY NINE)
32bf: ? (CIRCLED NUMBER FIFTY)
3405: ? (CJK UNIFIED IDEOGRAPH-3405)
3483: ? (CJK UNIFIED IDEOGRAPH-3483)
382a: ? (CJK UNIFIED IDEOGRAPH-382A)
3b4d: ? (CJK UNIFIED IDEOGRAPH-3B4D)
4e00: ? (CJK UNIFIED IDEOGRAPH-4E00)
4e03: ? (CJK UNIFIED IDEOGRAPH-4E03)
4e07: ? (CJK UNIFIED IDEOGRAPH-4E07)
4e09: ? (CJK UNIFIED IDEOGRAPH-4E09)
4e5d: ? (CJK UNIFIED IDEOGRAPH-4E5D)
4e8c: ? (CJK UNIFIED IDEOGRAPH-4E8C)
4e94: ? (CJK UNIFIED IDEOGRAPH-4E94)
4e96: ? (CJK UNIFIED IDEOGRAPH-4E96)
4ebf: ? (CJK UNIFIED IDEOGRAPH-4EBF)
4ec0: ? (CJK UNIFIED IDEOGRAPH-4EC0)
4edf: ? (CJK UNIFIED IDEOGRAPH-4EDF)
4ee8: ? (CJK UNIFIED IDEOGRAPH-4EE8)
4f0d: ? (CJK UNIFIED IDEOGRAPH-4F0D)
4f70: ? (CJK UNIFIED IDEOGRAPH-4F70)
5104: ? (CJK UNIFIED IDEOGRAPH-5104)
5146: ? (CJK UNIFIED IDEOGRAPH-5146)
5169: ? (CJK UNIFIED IDEOGRAPH-5169)
516b: ? (CJK UNIFIED IDEOGRAPH-516B)
516d: ? (CJK UNIFIED IDEOGRAPH-516D)
5341: ? (CJK UNIFIED IDEOGRAPH-5341)
5343: ? (CJK UNIFIED IDEOGRAPH-5343)
5344: ? (CJK UNIFIED IDEOGRAPH-5344)
5345: ? (CJK UNIFIED IDEOGRAPH-5345)
534c: ? (CJK UNIFIED IDEOGRAPH-534C)
53c1: ? (CJK UNIFIED IDEOGRAPH-53C1)
53c2: ? (CJK UNIFIED IDEOGRAPH-53C2)
53c3: ? (CJK UNIFIED IDEOGRAPH-53C3)
53c4: ? (CJK UNIFIED IDEOGRAPH-53C4)
56db: ? (CJK UNIFIED IDEOGRAPH-56DB)
58f1: ? (CJK UNIFIED IDEOGRAPH-58F1)
58f9: ? (CJK UNIFIED IDEOGRAPH-58F9)
5e7a: ? (CJK UNIFIED IDEOGRAPH-5E7A)
5efe: ? (CJK UNIFIED IDEOGRAPH-5EFE)
5eff: ? (CJK UNIFIED IDEOGRAPH-5EFF)
5f0c: ? (CJK UNIFIED IDEOGRAPH-5F0C)
5f0d: ? (CJK UNIFIED IDEOGRAPH-5F0D)
5f0e: ? (CJK UNIFIED IDEOGRAPH-5F0E)
5f10: ? (CJK UNIFIED IDEOGRAPH-5F10)
62fe: ? (CJK UNIFIED IDEOGRAPH-62FE)
634c: ? (CJK UNIFIED IDEOGRAPH-634C)
67d2: ? (CJK UNIFIED IDEOGRAPH-67D2)
6f06: ? (CJK UNIFIED IDEOGRAPH-6F06)
7396: ? (CJK UNIFIED IDEOGRAPH-7396)
767e: ? (CJK UNIFIED IDEOGRAPH-767E)
8086: ? (CJK UNIFIED IDEOGRAPH-8086)
842c: ? (CJK UNIFIED IDEOGRAPH-842C)
8cae: ? (CJK UNIFIED IDEOGRAPH-8CAE)
8cb3: ? (CJK UNIFIED IDEOGRAPH-8CB3)
8d30: ? (CJK UNIFIED IDEOGRAPH-8D30)
9621: ? (CJK UNIFIED IDEOGRAPH-9621)
9646: ? (CJK UNIFIED IDEOGRAPH-9646)
964c: ? (CJK UNIFIED IDEOGRAPH-964C)
9678: ? (CJK UNIFIED IDEOGRAPH-9678)
96f6: ? (CJK UNIFIED IDEOGRAPH-96F6)
a6e6: ? (BAMUM LETTER MO)
a6e7: ? (BAMUM LETTER MBAA)
a6e8: ? (BAMUM LETTER TET)
a6e9: ? (BAMUM LETTER KPA)
a6ea: ? (BAMUM LETTER TEN)
a6eb: ? (BAMUM LETTER NTUU)
a6ec: ? (BAMUM LETTER SAMBA)
a6ed: ? (BAMUM LETTER FAAMAE)
a6ee: ? (BAMUM LETTER KOVUU)
a6ef: ? (BAMUM LETTER KOGHOM)
a830: ? (NORTH INDIC FRACTION ONE QUARTER)
a831: ? (NORTH INDIC FRACTION ONE HALF)
a832: ? (NORTH INDIC FRACTION THREE QUARTERS)
a833: ? (NORTH INDIC FRACTION ONE SIXTEENTH)
a834: ? (NORTH INDIC FRACTION ONE EIGHTH)
a835: ? (NORTH INDIC FRACTION THREE SIXTEENTHS)
f96b: ? (CJK COMPATIBILITY IDEOGRAPH-F96B)
f973: ? (CJK COMPATIBILITY IDEOGRAPH-F973)
f978: ? (CJK COMPATIBILITY IDEOGRAPH-F978)
f9b2: ? (CJK COMPATIBILITY IDEOGRAPH-F9B2)
f9d1: ? (CJK COMPATIBILITY IDEOGRAPH-F9D1)
f9d3: ? (CJK COMPATIBILITY IDEOGRAPH-F9D3)
f9fd: ? (CJK COMPATIBILITY IDEOGRAPH-F9FD)
Run Code Online (Sandbox Code Playgroud)
但是,Numeric_Type = Digit和Numeric_Type = Numeric之间的区别不再被认为是有用的,并且自Unicode 6.3.0起,Numeric_Type = Digit不再用于新字符.引用Unicode标准附件#44:
从Unicode 6.3.0开始,不会给新编码的数字字符赋予Numeric_Type = Digit,也不会将具有Numeric_Type = Numeric的现有字符更改为Numeric_Type = Digit.这两种类型之间的区别并不有用.
因此, (DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO) and other characters that once would have been assigned Numeric_Type=Digit have instead been assigned Numeric_Type=Numeric, and they report False为isdigit:
>>> ''.isdigit()
False
Run Code Online (Sandbox Code Playgroud)
unicode.isnumeric()
Run Code Online (Sandbox Code Playgroud)
如果S中只有数字字符,则返回True,否则返回False.数字字符包括数字字符,以及具有Unicode数值属性的所有字符,例如U + 2155,VULGAR FRACTION ONE FIFTH.
str.isdigit()
Run Code Online (Sandbox Code Playgroud)
如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false.
对于8位字符串,此方法取决于区域设置.
| 归档时间: |
|
| 查看次数: |
14425 次 |
| 最近记录: |