鱼C论坛

 找回密码
 立即注册
查看: 863|回复: 1

[已解决]新入门小白求大神解惑(关于python数字类型)

[复制链接]
发表于 2020-6-8 17:13:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
   学习python函数,有几个函数对判断包含字符很困惑:

1、 isalnum()    字符串中至少包含一个字符,且所有字符都是字母或数字则返回True,否则False。
      name="幸福",name.isalnum()=True    (不是说只是字母和数字嘛,幸福不是中文吗?)

2、还有就是isalnum()、isdecimal()、isnumeric(),百度了下这三个函数的区别,

但是还是不太理解 Unicode数字,byte数字(单字节)

num = "1"  #unicode  ()

num = b"1" # byte(网上举了这个例子,byte数字为什么要在前面加“b”,是不是前面加“b”就是单字节)


能不能举简单的例子帮忙说明一下

————————————————
版权声明:本文为CSDN博主「观点小号」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38475134/java/article/details/91043666
最佳答案
2020-6-8 19:37:29
本帖最后由 Twilight6 于 2020-6-8 19:45 编辑

1、 isalnum()    字符串中至少包含一个字符,且所有字符都是字母或数字则返回True,否则False。


对的,中文也会返回True,因为计算机中存储汉字的方式是汉字内码,也就是以ASCII码储存的,所以这里才返回True

2、还有就是isalnum()、isdecimal()、isnumeric(),百度了下这三个函数的区别


  • isalnum() 所有的字符都是字母或者数字返回True 否则返回False
    '123asd'.isalnum()  # 因为字符全是数字或者字母 返回 True
    >>> True
    '1a...'.isalnum()  # 因为字符内不全部都是字母或数字返回 False
    >>> False
  • isdecimal() 字符串内只包含十进制数字返回 True 否则返回False

    Python 中二进制字符串前面是带 0b的字符串 比如 '0b1010'就是表示十进制的 10

    八进制字符串前面带0o 比如'0o12' 就是表示十进制的 10

    十六进制字符串前面会带0x 且大于9的数开始用字母a、b、c代替,a代表10,b代表11,直到f代表15,比如'0xa' 就代表十进制的 10
  • isnumeric() 如果字符串中只包含数字字符 返回True 否则返回 False

num = "1"  #unicode

num.isdigit()   # True

num.isdecimal() # True

num.isnumeric() # True


num = "1" # 全角

num.isdigit()   # True

num.isdecimal() # True

num.isnumeric() # True


num = b"1" # byte

num.isdigit()   # True

num.isdecimal() # 报错:AttributeError 'bytes' object has no attribute 'isdecimal'

num.isnumeric() # 报错:AttributeError 'bytes' object has no attribute 'isnumeric'


num = "IV" # 罗马数字

num.isdigit()   # True

num.isdecimal() # False

num.isnumeric() # True


num = "四" # 汉字

num.isdigit()   # False

num.isdecimal() # False

num.isnumeric() # True

Ps:以上来源CSDN

byte(网上举了这个例子,byte数字为什么要在前面加“b”,是不是前面加“b”就是单字节)

不止数字,只要数据是 b 前缀代表的就是bytes 类型数据,这个不用举例子把...理解b是什么意义就行

字节具体看看这篇文章吧:https://www.jianshu.com/p/41cfc3362f18
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 19:37:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-6-8 19:45 编辑

1、 isalnum()    字符串中至少包含一个字符,且所有字符都是字母或数字则返回True,否则False。


对的,中文也会返回True,因为计算机中存储汉字的方式是汉字内码,也就是以ASCII码储存的,所以这里才返回True

2、还有就是isalnum()、isdecimal()、isnumeric(),百度了下这三个函数的区别


  • isalnum() 所有的字符都是字母或者数字返回True 否则返回False
    '123asd'.isalnum()  # 因为字符全是数字或者字母 返回 True
    >>> True
    '1a...'.isalnum()  # 因为字符内不全部都是字母或数字返回 False
    >>> False
  • isdecimal() 字符串内只包含十进制数字返回 True 否则返回False

    Python 中二进制字符串前面是带 0b的字符串 比如 '0b1010'就是表示十进制的 10

    八进制字符串前面带0o 比如'0o12' 就是表示十进制的 10

    十六进制字符串前面会带0x 且大于9的数开始用字母a、b、c代替,a代表10,b代表11,直到f代表15,比如'0xa' 就代表十进制的 10
  • isnumeric() 如果字符串中只包含数字字符 返回True 否则返回 False

num = "1"  #unicode

num.isdigit()   # True

num.isdecimal() # True

num.isnumeric() # True


num = "1" # 全角

num.isdigit()   # True

num.isdecimal() # True

num.isnumeric() # True


num = b"1" # byte

num.isdigit()   # True

num.isdecimal() # 报错:AttributeError 'bytes' object has no attribute 'isdecimal'

num.isnumeric() # 报错:AttributeError 'bytes' object has no attribute 'isnumeric'


num = "IV" # 罗马数字

num.isdigit()   # True

num.isdecimal() # False

num.isnumeric() # True


num = "四" # 汉字

num.isdigit()   # False

num.isdecimal() # False

num.isnumeric() # True

Ps:以上来源CSDN

byte(网上举了这个例子,byte数字为什么要在前面加“b”,是不是前面加“b”就是单字节)

不止数字,只要数据是 b 前缀代表的就是bytes 类型数据,这个不用举例子把...理解b是什么意义就行

字节具体看看这篇文章吧:https://www.jianshu.com/p/41cfc3362f18
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 20:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表