鱼C论坛

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

[已解决]字符串的方法

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

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

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

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

在这一章里面,介绍了很多关于字符串的方法。其中有几个在自己尝试的时候发现了一些问题。例如:
>>> b = 'β'
>>> b.isalpha()
True         //希腊字母
>>> c = 'Д'
>>> c.isalpha()
True      //俄语字母
>>> c = 'Ѳ'
>>> c.isalpha()
True
>>> c = 'Ѭ'
>>> c.isalpha()
True      //已经废弃的俄文字母
>>> c = 'ـح'
>>> c.isalpha()
True      //阿拉伯语字母
>>> c = '.'
>>> c.isalpha()
False      //标点符号
>>> c = 'ـغـ'
>>> c.isalpha()
True      //阿拉伯语字母
>>> c = 'क'
>>> c.isalpha()
True
>>> c = 'あ'
>>> c.isalpha()
True      //日语字母
>>> c = 'ㅊ'
>>> c.isalpha()
True      //韩语字母
>>> c = '大'
>>> c.isalpha()
True    //中文汉字?
>>> c = '我'
>>> c.isalpha()
True    //中文汉字?
>>> c = '我ai'
>>> c.isalpha()
True    //中文汉字与英文字母混排?
>>> c = '我2'
>>> c.isalpha()
False      //中文汉字与数字混排?

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

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

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

那问题来了,‘3’、‘-3’、‘3.14’、‘0’ 这四个元素,都是十进制数字吧?都是数字吧?都是数值吧?然而结果如下:
>>> a = '3'
>>> b = '3.14'
>>> c = '-3.14'
>>> d = '0'
>>> 
>>> a.isdecimal()
True
>>> a.isdigit()
True
>>> a.isnumeric()
True
>>> 
>>> b.isdecimal()
False
>>> b.isdigit()
False
>>> b.isnumeric()
False
>>> 
>>> c.isdecimal()
False
>>> c.isdigit()
False
>>> c.isnumeric()
False
>>> 
>>> d.isdecimal()
True
>>> d.isdigit()
True
>>> d.isnumeric()
True


我简直要疯了,为什么呢?这三个之间的区别到底是什么呢?
最佳答案
2021-1-13 16:35:32
1. isalpha() 没用过,这里就不说了。
2. 
isdecimal——如果字符串仅由十进制数字构成,则返回True,否则False。
isdigit——如果字符串仅由数字构成则返回True,否则False。
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. isalpha() 没用过,这里就不说了。
2. 
isdecimal——如果字符串仅由十进制数字构成,则返回True,否则False。
isdigit——如果字符串仅由数字构成则返回True,否则False。
isnumeric——如果字符串仅由数值构成则返回True,否则False。
'3.14' 里的 . 不是数字, '-3.14' 就更不用说了, - 和 . 都不是数字。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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