zoukankan      html  css  js  c++  java
  • 02 isdecimal(), isdigit(), isnumeric()

    isdecimal()

    • 官方文档截图

    • 简单地说:若字符串中所有字符都是十进制字符,则返回 True,否则返回 False

    isdigit()

    • 官方文档截图

    • 简单地说:若字符串中所有字符都是数字字符,则返回 True,否则返回 False

    • 所以,isdigit() 的范围大于 isdecimal()

    isnumeric()

    • 官方文档截图

    • 简单地说:若字符串中所有字符都是数字字符,则返回 True,否则返回 False

    • isdecimal(), isdigit() 有区别

    对比

    isdecimal()
    True:  Unicode 数字,全角数字(双字节)
    False: 小数,罗马数字,汉字数字
    Error: byte 数字(半角、单字节)
    
    isdigit()
    True:  Unicode 数字,全角数字(双字节),byte 数字(半角、单字节)
    False: 小数,罗马数字,汉字数字
    Error: 无
    
    isnumeric()
    True:  Unicode 数字,全角数字(双字节),罗马数字,汉字数字
    False: 小数
    Error: byte 数字(半角、单字节)
    
    • isdecimal()isdigit() 的区别就在 byte 数字上

      • byte 数字在使用 isdecimal() 时抛出异常
      • byte 数字在使用 isdigit() 时输出 True
    • isdecimal()isnumeric() 的区别就在罗马数字汉字数字

      • 罗马数字和汉字数字在使用 isdecimal() 时输出 False
      • 罗马数字和汉字数字在使用 isnumeric() 时输出 True
    • 另外,对“圈数字”而言

      • False: isdecimal()
      • True: isdigit(), isnumeric()

    举例

    例1

    num1 = '6'  # unicode
    num2 = '6'  # 全角
    num3 = '6.6'  # 小数
    num4 = 'Ⅵ'  # 罗马数字 6
    num5 = '六'  # 汉字数字
    num6 = b'6'  # byte / 半角
    
    print(num1.isdecimal())  # T unicode
    print(num2.isdecimal())  # T 全角
    print(num3.isdecimal())  # F 小数
    print(num4.isdecimal())  # F 罗马数字
    print(num5.isdecimal())  # F 汉字数字
    print(num6.isdecimal())  # AttributeError: 'bytes' object has no attribute 'isdecimal'
    
    print(num1.isdigit())  # T unicode
    print(num2.isdigit())  # T 全角
    print(num3.isdigit())  # F 小数
    print(num4.isdigit())  # F 罗马数字
    print(num5.isdigit())  # F 汉字数字
    print(num6.isdigit())  # T 半角
    
    print(num1.isnumeric())  # T unicode
    print(num2.isnumeric())  # T 全角
    print(num3.isnumeric())  # F 小数
    print(num4.isnumeric())  # T 罗马数字
    print(num5.isnumeric())  # T 汉字数字
    print(num6.isnumeric())  # AttributeError: 'bytes' object has no attribute 'isnumeric'
    

    例2

    >>> "②".isdecimal()
    False
    >>> "②".isdigit()
    True
    >>> "②".isnumeric()
    True
    >>> 
    
  • 相关阅读:
    1373:鱼塘钓鱼(fishing)
    1261:【例9.5】城市交通路网
    1259:【例9.3】求最长不下降序列
    1260:【例9.4】拦截导弹(Noip1999)
    1258:【例9.2】数字金字塔
    1261:【例9.5】城市交通路网
    1260:【例9.4】拦截导弹(Noip1999)
    1259:【例9.3】求最长不下降序列
    1257:Knight Moves
    [HAOI2008]硬币购物(动态规划、容斥、搜索)
  • 原文地址:https://www.cnblogs.com/yorkyu/p/10270963.html
Copyright © 2011-2022 走看看