[Python3 填坑] 002 isdecimal() 与 isdigit() 的区别 + isnumeric() 的补充

目录

  • 1. print( 坑的信息 )
  • 2. isdecimal() 官方文档
  • 3. isdigit() 官方文档
  • 4. 举例
    • (1) 先说结论
    • (2) 示例
  • 5. 补充 isnumeric()
    • (1) 官方文档
    • (2) 先说结论
    • (3) 举例说明

1. print( 坑的信息 )

  • 挖坑时间:2019/01/14
  • 明细
    坑的编码 内容
    Py009-2 Python3 中 isdecimal() 和 isdigit() 的区别

2. isdecimal() 官方文档

  • 截图:

  • 大致意思:

如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回 True,否则返回 False。

十进制字符是可以用来组成以 10 为基数的数字的字符,例如 U+0660:阿拉伯-印度数字零。

形式上,十进制字符是 Unicode 通用类别 ·nd· 中的字符。

  • U+0030:数字零; U+0660:阿拉伯-印度数字零
  • nd:数字,十进制

3. isdigit() 官方文档

  • 截图:

  • 大致意思:

如果字符串中的所有字符都是数字并且至少有一个字符,则返回 True,否则返回 False。

数字包括十进制字符和需要特殊处理的数字,如兼容性上标数字。

这包括不能用于以 10 为基数构成数字的数字,如 Kharosthi 数字。

从形式上讲,数字是一个具有属性值 numeric_type=digitnumeric_type=decimal 的字符。

  • kharosthi 编码在 unicode 范围 U+10a00 – U+10a5f

4. 举例

(1) 先说结论

isdecimal()

True:Unicode 数字,全角数字(双字节)

False:小数,罗马数字,汉字数字

Error:byte 数字(半角、单字节)

isdigit()

True:Unicode 数字,全角数字(双字节),byte 数字(半角、单字节)

False:小数,罗马数字,汉字数字

Error:无

  • 所以 isdecimal() 与 isdigit() 的区别就在 byte 数字上

    • byte 数字在使用 isdecimal() 时报错
    • byte 数字在使用 isdigit() 时输出 True

(2) 示例

# 例1 isdecimal()

num1 = ‘6‘              # unicode
num2 = ‘6‘              # 全角
num3 = ‘6.6‘            # 小数
num4 = ‘Ⅵ‘              # 罗马数字 6
num5 = ‘六‘              # 简体汉字 小写数字
num6 = ‘陆‘              # 简体汉字 大写数字
num7 = b‘6‘             # byte

print(num1.isdecimal())
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
print(num5.isdecimal())
print(num6.isdecimal())
print(num7.isdecimal())
  • 运行结果

True

True

False

False

False

False

AttributeError……‘bytes‘ object has no attribute ‘isdecimal‘

最后一条代码报错:‘bytes‘ 对象没有 ‘isdecimal‘ 属性。


# 例2 isdigit()

num1 = ‘6‘              # unicode
num2 = ‘6‘              # 全角
num3 = ‘6.6‘            # 小数
num4 = ‘Ⅵ‘              # 罗马数字 6
num5 = ‘六‘              # 简体汉字 小写数字
num6 = ‘陆‘              # 简体汉字 大写数字
num7 = b‘6‘             # byte

print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
print(num5.isdigit())
print(num6.isdigit())
print(num7.isdigit())
  • 运行结果

True

True

False

False

False

False

True


5. 补充 isnumeric()

(1) 官方文档

  • 截图:

  • 大致意思:

如果字符串中的所有字符都是数字字符,并且至少有一个字符,则返回 True,否则返回 False。

数字字符除了包括数字字符,还有具有 Unicode 数值属性的所有字符,例如 U+2155:VULGAR FRACTION ONE FIFTH。

从形式上讲,数字字符是具有属性值 numeric_type=digitnumeric_type=decimalnumeric_type=numeric 的字符。

VULGAR FRACTION ONE FIFTH,大概写 HTML 时有用,这里就不挖二重坑了。


(2) 先说结论

True:Unicode 数字,全角数字(双字节),罗马数字,汉字数字

False:小数

Error:byte 数字(半角、单字节)

  • isnumeric() 与 isdecimal() 的区别就在罗马数字和汉字数字上

    • 罗马数字和汉字数字在使用 isnumeric() 时输出 True
    • 罗马数字和汉字数字在使用 isdecimal() 时输出 False

(3) 举例说明

# 例3 isnumeric()

num1 = ‘6‘              # unicode
num2 = ‘6‘              # 全角
num3 = ‘6.6‘            # 小数
num4 = ‘Ⅵ‘              # 罗马数字 6
num5 = ‘六‘              # 简体汉字 小写数字
num6 = ‘陆‘              # 简体汉字 大写数字
num7 = b‘6‘             # byte

print(num1.isnumeric())
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
print(num5.isnumeric())
print(num6.isnumeric())
print(num7.isnumeric())
  • 运行结果

True

True

False

True

True

True

AttributeError……‘bytes‘ object has no attribute ‘isnumeric‘

最后一条代码报错:‘bytes‘ 对象没有 ‘isnumeric‘ 属性。

原文地址:https://www.cnblogs.com/yorkyu/p/10270963.html

时间: 2024-11-03 02:42:11

[Python3 填坑] 002 isdecimal() 与 isdigit() 的区别 + isnumeric() 的补充的相关文章

[Python3 填坑] 003 关键字?保留字?预留字?

目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 问题的由来 (2) 网上搜索 (3) 最终结论 (4) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/04 明细 坑的编码 内容 Py002-1 Python 的"关键字"与"保留字"有没有区别 2. 开始填坑 (1) 问题的由来 照理说,我不该这么折腾. 就我浅薄的知识而言,说到编程语言中的"关键字",最先想到的还是 C.可能是先入为主的关系,后来简短地接触过一

[Python3 填坑] 007 多才多艺的 len()

目录 1. print( 坑的信息 ) 2. 开始填坑 (1) 总的来说 (2) 举例说明 (3) 后记 1. print( 坑的信息 ) 挖坑时间:2019/01/10 明细 坑的编码 内容 Py006-1 len() 的使用场合 2. 开始填坑 (1) 总的来说 len() 返回容器中的项目数 在某些对象中会包含对其它对象的引用,这样的对象被称作容器(containers) 简单地说,Python 中常见的数据结构,如 string.list.tuple.set.dict 等均为容器 fro

vue使用填坑之:model和v-model的区别

v-model通常用于input的双向数据绑定 <input v-model="parentMsg">,也可以实现子组件到父组件数据的双向数据绑定: 首先说说v-model的用法: 父组件:      <div> <input type="text" v-model='msg'> <child v-model='msg'></child> </div> 子组件:    Vue.component

常用的代码收集,没有任何技术含量,只是填坑的积累

以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. 转自:https://github.com/jsfront/src/blob/master/js.md 1. PC - js 返回指定范围的随机数(m-n之间)的公式 Math.random()*(n-m)+m return false return false // event.preventDefault()会阻挡预设要发生的事件. // event.stopPropagation()会阻挡发生冒泡事件. //

Cython的用法以及填坑姿势

因为项目需要,需要优化已有的Python代码.目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层.如果去掉指令解释这个阶段,直接进入C代码层,效率就比较高了.如果用之前所述的使用Python C API将Python代码改造为C代码并作为Python的内建模块,工作量极其大,也不能保证其正确性,所以这种方法不太现实.而Cython库正好符合这种场景需求,将已有的Python代码转化为C语言的代码,并作为Python的built-in模块扩

填坑黑苹果(VMware装MacOS) - 修改 Unlocker 补丁源码版

最近闲的突然想找点事来折腾一下, 于是随着苹果的发布会就盯上自己手上的 iPhone, 也想弄个 Mac 来搞 IOS. 于是就有了这个填坑故事. 为什么要修改补丁源码: 不再苦苦去寻找和下载 drawn.iso 文件, 虽然我会告诉你这里可以下载到官网的; 遇到个错误, 既然也是搞 python 的, 那自己当然也要动手动手了. 1. 安装前 \1. 安装环境 Windows 10 VMware Pro 14 \2. 系统硬件配置 内存推荐 16G 以上 硬盘预留 40G 以上 CPU推荐 i

图像旋转后出现黑点 - (二) - 填坑

前接:图像旋转后出现黑点 - (一) - 入坑 这是填坑篇,之前写的图片旋转程序把图片变成了桌布,几个世纪后,在一个月黑风高的夜晚,我灵光乍现,何不试试双线性插值? 先上代码和效果图. 1 # !/usr/bin/env python3 2 # -*-coding:utf-8-*- 3 """ 4 双线性插值参考资料: 双线性插值原理及Python实现 - Jinglever https://www.jianshu.com/p/29e5c84ea539 5 6 如果出现错误:

一名Android开发者的微信小程序填坑之路(2)

前言 上一篇是九月二十七日写的,而这一篇我动笔的时间是十月十日(特殊的日子),中间相隔十三天--当然是因为国庆节.说老实话,这十三天里面我都没有碰和小程序有关的东西--毕竟学习小程序的开发也只是起于兴趣,而平时的工作并不会涉及与其相关的东西--但是在这十三天里,我能明显的感受到小程序热正在逐渐的消退,或者说大家正在逐渐以一种较为平和的姿态接受它的存在,其实这是一件好事.期待公测的到来. 接下来我就直接进入正题了,另外,文末我想和大家分享一下我的国庆节. PS:这篇文章是接着上一篇文章 一名And

【结果很简单,过程很艰辛】记阿里云Ons消息队列服务填坑过程

Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的时候,会开放思路.当然不得不说,Ons的.NET接口还很不完善,甚至没有独立在Windos 2008/2012服务器测试过,希望官方加把力. 1.阿里云ONS介绍 ONS(Open Notification Service)即开放消息服务,是基于阿里开源消息中间件MetaQ(RocketMQ)打造的