鱼C论坛

 找回密码
 立即注册
查看: 1540|回复: 2

[已解决]字符串的方法

[复制链接]
发表于 2021-1-13 14:39:52 | 显示全部楼层 |阅读模式

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

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

x
今天从小甲鱼的《零基础入门学习python》(第二版)里面看到了字符串这一个章节。

在这一章里面,介绍了很多关于字符串的方法。其中有几个在自己尝试的时候发现了一些问题。例如:

  1. >>> b = 'β'
  2. >>> b.isalpha()
  3. True         //希腊字母
  4. >>> c = 'Д'
  5. >>> c.isalpha()
  6. True      //俄语字母
  7. >>> c = 'Ѳ'
  8. >>> c.isalpha()
  9. True
  10. >>> c = 'Ѭ'
  11. >>> c.isalpha()
  12. True      //已经废弃的俄文字母
  13. >>> c = 'ـح'
  14. >>> c.isalpha()
  15. True      //阿拉伯语字母
  16. >>> c = '.'
  17. >>> c.isalpha()
  18. False      //标点符号
  19. >>> c = 'ـغـ'
  20. >>> c.isalpha()
  21. True      //阿拉伯语字母
  22. >>> c = 'क'
  23. >>> c.isalpha()
  24. True
  25. >>> c = 'あ'
  26. >>> c.isalpha()
  27. True      //日语字母
  28. >>> c = 'ㅊ'
  29. >>> c.isalpha()
  30. True      //韩语字母
  31. >>> c = '大'
  32. >>> c.isalpha()
  33. True    //中文汉字?
  34. >>> c = '我'
  35. >>> c.isalpha()
  36. True    //中文汉字?
  37. >>> c = '我ai'
  38. >>> c.isalpha()
  39. True    //中文汉字与英文字母混排?
  40. >>> c = '我2'
  41. >>> c.isalpha()
  42. False      //中文汉字与数字混排?
复制代码


可以看到,isalpha()这个方法里提到的字母,跟我们想象中的字母不是同一个概念。甚至一个中文字符也可以是alpha。

然而,在尝试isdecimal()、isdigit()、isnumeric()这三个方法的时候,发现书上是这么说的:

isdecimal——如果字符串仅由十进制数字构成,则返回True,否则False。
isdigit——如果字符串仅由数字构成则返回True,否则False。
isnumeric——如果字符串仅由数值构成则返回True,否则False。

那问题来了,‘3’、‘-3’、‘3.14’、‘0’ 这四个元素,都是十进制数字吧?都是数字吧?都是数值吧?然而结果如下:

  1. >>> a = '3'
  2. >>> b = '3.14'
  3. >>> c = '-3.14'
  4. >>> d = '0'
  5. >>>
  6. >>> a.isdecimal()
  7. True
  8. >>> a.isdigit()
  9. True
  10. >>> a.isnumeric()
  11. True
  12. >>>
  13. >>> b.isdecimal()
  14. False
  15. >>> b.isdigit()
  16. False
  17. >>> b.isnumeric()
  18. False
  19. >>>
  20. >>> c.isdecimal()
  21. False
  22. >>> c.isdigit()
  23. False
  24. >>> c.isnumeric()
  25. False
  26. >>>
  27. >>> d.isdecimal()
  28. True
  29. >>> d.isdigit()
  30. True
  31. >>> d.isnumeric()
  32. True
复制代码



我简直要疯了,为什么呢?这三个之间的区别到底是什么呢?
最佳答案
2021-1-13 16:35:32
  1. 1. isalpha() 没用过,这里就不说了。
  2. 2.
  3. isdecimal——如果字符串仅由十进制数字构成,则返回True,否则False。
  4. isdigit——如果字符串仅由数字构成则返回True,否则False。
  5. isnumeric——如果字符串仅由数值构成则返回True,否则False。
复制代码

'3.14' 里的 . 不是数字, '-3.14' 就更不用说了, - 和 . 都不是数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-13 14:51:51 | 显示全部楼层
这个还真没注意过,不过理解概念就行
类似充分不必要、必要不充分的这些东西,确实挺迷的
你可以看看这个https://blog.csdn.net/weixin_42764266/article/details/105392430
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-13 16:35:32 | 显示全部楼层    本楼为最佳答案   
  1. 1. isalpha() 没用过,这里就不说了。
  2. 2.
  3. isdecimal——如果字符串仅由十进制数字构成,则返回True,否则False。
  4. isdigit——如果字符串仅由数字构成则返回True,否则False。
  5. isnumeric——如果字符串仅由数值构成则返回True,否则False。
复制代码

'3.14' 里的 . 不是数字, '-3.14' 就更不用说了, - 和 . 都不是数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 01:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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