鱼C论坛

 找回密码
 立即注册
查看: 12068|回复: 30

[知识点备忘] 第029讲:字符串(III)

[复制链接]
发表于 2020-11-25 06:01:20 | 显示全部楼层 |阅读模式
购买主题 已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-18 11:42:34 | 显示全部楼层
这节讲的是有关字符串“判断”的14个方法,均返回布尔值。其中,startswith()和endswith()方法可以元组的形式传入多个待匹配字符串,方便灵活!以平方字符、罗马字符和汉字字符为例,对比了isdecimal()、isdigit()和isnumeric()三种方法之间的区别,发现isdecimal()适用范围最窄,而isnumeric()适用范围最广,是最能“经受考验”的,这也是本节最有意思的地方!此外,对于同一个语句中连续调用多个方法的情况,Python会从左往右依次调用各方法。这种写法很简洁,由此也不难看出Python很聪明!视频最后还补充了利用keyword模块里的iskeyword()方法来对Python关键字进行判断的“冷知识”!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2021-2-9 15:02:37 | 显示全部楼层
小古比鱼 发表于 2020-12-18 11:42
这节讲的是有关字符串“判断”的14个方法,均返回布尔值。其中,startswith()和endswith()方法可以元组的形 ...
对于同一个语句中连续调用多个方法的情况,Python会从左往右依次调用各方法。这种写法很简洁,由此也不难看出Python很聪明
面向对象的语言都是这么干的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-19 10:55:55 | 显示全部楼层
**字符串3**

判断和检测(返回的都应该是一个布尔类型的值,即True或者False):startswitb(prefix[,start[,end]])    endswith(suffix[,start[,end]])
isupper()     islower()    istitle()   isalpha()   isascii()    isspace()   isprintable()
isdecimal()    isdigit()     isnumeric()    isalnum()     isidentifier()

startswitb(prefix[,start[,end]]:用于判断它这个参数指定的子字符串是否出现在字符串的起始位置(如果存在 prefix 参数指定的前缀子字符串,则返回 True,否则返回 False);可选参数 start 和 end 用于指定起始和结束位置;prefix 参数允许以元组的形式提供多个子字符串

>>> x = "我爱Python"
>>> x.startswith("我")
True
>>> x.startswith("小甲鱼")
False
>>> x.startswith("我",1)
False
>>> x.startswith("爱",1)
True

endswith(suffix[,start[,end]]):用于判断它这个参数指定的子字符串是否出现在字符串的结束位置(如果字符串是以 suffix 指定的子字符串为结尾,那么返回 True,否则返回 False);可选参数 start 和 end 用于指定起始和结束位置;suffix 参数允许以元组的形式提供多个子字符串

>>> x.endswith("Python")
True
>>> x.endswith("Py")
False
>>> x.endswith("Py",0,4)
True


>>> if x.startswith(("你", "我", "她")):
        print("总有人喜爱Python")
  总有人喜爱Python
  [使用元组]
  
  istitle():如果字符串是标题化字符串(所有的单词都是以大写开始,其余字母均小写)则返回 True,否则返回 False
  
>>> x = "I love Python"
>>> x.istitle()
False
>>> x = "I Love Python"
>>> x.istitle()
True

isupper():如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是大写,则返回 True,否则返回 False

>>> x.isupper()
False
>>> x.upper().isupper()
True
[在一个语句中连续调用多个方法,Python是从左往右依次进行调用;Python是先通过调用upper()方法将字符串全体成员转换成大写字母的新字符串,然后再调用isupper()方法来进行判断]

islower():如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是小写,则返回 True,否则返回 False

>>> x.islower()
False

  isalpha():如果字符串中至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
  
>>> x.isalpha()
False
>>> "IlovePython".isalpha()
True
>>> "I爱Python".isalpha()
True
[空格不是字母,中文支持检测为字母]

isspace():如果字符串中至少有一个字符并且所有字符都是空格,则返回 True,否则返回 False

>>> "           \n".isspace()
True
[Tab,空格,转义字符都是空白]

isprintable():如果字符串是可以打印的内容则返回 True,否则返回 False

>>> x.isprintable()
True
>>> "I love Fishc\n".isprintable()
False
[\n这个转义字符不是一个可打印字符]

isdecimal():如果字符串中至少有一个字符并且所有字符都是十进制数字则返回 True,否则返回 False

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

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

>>> x = "12345"
>>> x.isdecimal()
True
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = "22"
>>> x.isdecimal()
False
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = "ⅠⅡⅢⅣⅤ"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = "一二三四五"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True

isalnum():如果字符串中至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False【只要isalpha(),isdecimal(),isdigit(),isnumeric()中任意一个方法返回True,那么结果都True】

isidentifier():如果字符串是一个合法的 Python 标识符则返回 True,否则返回 False;调用 keyword.iskeyword(s) 可以检测字符串是否一个保留标识符(比如 "if" 或 "for")

>>> "I am a good guy".isidentifier()
False
>>> "I_am_a_good_guy".isidentifier()
True
>>> "Fishc520".isidentifier()
True
>>> "520Fishc".isidentifier()
False
[将空格全部替换成下划线,标识符不能以数字为开头]

如果你想判断一个字符串是否为Python的保留标识符(if,for,while等关键字),那么我们可以使用keyword模块的iskeyword函数来进行实现,要使用模块,需先导入模块

>>> import keyword
>>> keyword.iskeyword("if")
True
>>> keyword.iskeyword("py")
False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 4 反对 0

使用道具 举报

发表于 2021-5-20 14:22:00 | 显示全部楼层
>>> x = "我爱Python"
>>> x.startswith("我")
True
>>> x.startswith("小甲鱼")
False
>>> x.endswith("Python")
True
>>> x.endswith("Py")
False
>>> x.startswith("我",1)
False
>>> x.startswith("爱",1)
True
>>> x.endswith("Py",0,4)
True
>>> x = "她爱Python"
>>> if x.startswith(("你","我","她")):
SyntaxError: invalid character ':' (U+FF1A)
>>> if x.startswith(("你","我","她")):
        print("总有人喜爱Python")

       
总有人喜爱Python
>>> x = "I love Python"
>>> x.istitle()
False
>>> x.isupper()
False
>>> x.upper().isupper()
True
>>> x.islower()
False
>>> x.lower().islower()
True
>>> x.isalpha()
False
>>> x ="IlovePython"
>>> x.isalpha()
True
>>> "          \n".isspace()
True
>>> x.isprintable()
True
>>> "I love Python\n".ispritable()
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    "I love Python\n".ispritable()
AttributeError: 'str' object has no attribute 'ispritable'
>>> "I love Python\n".isprintable()
False
>>> x = "12345"
>>> x.isdecimal()
True
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x ="22"
>>> x.decimal()
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    x.decimal()
AttributeError: 'str' object has no attribute 'decimal'
>>> x.isdecimal()
False
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = "Ⅰ"
>>> x = "ⅠⅡⅢⅣⅤ"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = "一二三四五"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> "I am a good guy".isidentifier()
False
>>> "I_am_good_guy".isidentifier()
True
>>> "FishC520".isidentifier()
True
>>> "520FishC".isidentifier()
False
>>> import keyword
>>> keyword.iskeyword("if")
True
>>> keyword.iskeyword("py")
False
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2021-11-26 15:50:22 | 显示全部楼层
>>> x = '我爱Python'
>>> x.startwith('我')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    x.startwith('我')
AttributeError: 'str' object has no attribute 'startwith'
>>> x.startswith('我')
True
>>> x.startswith('爱')
False
>>> x.endswith('Python')
True
>>> x.endswith('Py')
False
>>> x.startswith('我',1)
False
>>> x.startswith('爱',1)
True
>>> x.endswith('Py',0,4)
True
>>> x = '她爱Python'
>>> if x.startswith(('你','我','她')):
        print('总有人喜欢python')

        
总有人喜欢python
>>> x = 'I love python'
>>> x.istitle()
False
>>> x.isupper()
False
>>> x.upper().isupper()
True
>>> x.islower()
False
>>> x.isalpha()
False
>>> 'Ilovepython'.isalpha()
True
>>> '        \n'isspace()
SyntaxError: invalid syntax
>>> "        \n".isspace()
True
>>> x.isprintable()
True
>>> 'I Love python\n'.isprintable()
False
>>> x = '12345'
>>> x.isdecimal()
True
>>> x.isdigit()
True
>>> x.isnumeric()
True
>>> x = '2 ** 2'
>>> x.sidecimal()
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    x.sidecimal()
AttributeError: 'str' object has no attribute 'sidecimal'
>>> x = 'ⅠⅡⅢⅣ'
>>> x.decimal()
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    x.decimal()
AttributeError: 'str' object has no attribute 'decimal'
>>> x = 'ⅡⅢⅣ'
>>> x.isdecimai()
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    x.isdecimai()
AttributeError: 'str' object has no attribute 'isdecimai'
>>> x.isdecimal()
False
>>> x.isdigital()
Traceback (most recent call last):
  File "<pyshell#35>", line 1, in <module>
    x.isdigital()
AttributeError: 'str' object has no attribute 'isdigital'
>>> x.isdigit()
False
>>> x.isnumeric()
True
>>> x = '一二三四五'
>>> x.isnumeric()
True
>>> x.isdecimal
<built-in method isdecimal of str object at 0x0000019E21132F90>
>>> x.isdecima()
Traceback (most recent call last):
  File "<pyshell#41>", line 1, in <module>
    x.isdecima()
AttributeError: 'str' object has no attribute 'isdecima'
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> 'I am a good gay'.isidentifier()
False
>>> 'I_am_a_good_gay'.isidentifier()
True
>>> 'love520'.isidentifier()
True
>>> '520love'.isidentifier()
False
>>> import keyword
>>> keyword.iskeyword('if')
True
>>> keyword.iskeyword('py')
False
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-20 13:25:56 | 显示全部楼层
0,  True

1,  false 有转义符

2, isdecimal()最严格,isnumeric()最宽松

3, False ,这里面没有字母或数字

4, s.isalpha()

5, True ,是合法的Python标识符

0
text= input('请输入text:')
words=input('请输入words:')
i = 0
s = []

while i < len(words):
    if ' ' not in words:
        x = words
        length = len(x)
        n = 0
        while n != -1:
            n = text.find(x,n)
            if n != -1:
                s.append([n,n+length-1])
                n += 1
        break
        
    elif words[i] == ' ':
        x = words[:i]
        length = len(x)
        n = 0
        while n != -1:
            n = text.find(x,n)
            if n != -1:
                s.append([n,n+length-1])
                n += 1
        words = words[i+1:]
        i = 0
        
    else:
        i += 1

print(s)
   


1
s = input('请输入一个由字母构成的字符串:')
n = len(s)

for i in range(1,n):
    if n % i == 0:
        s1 = s[:i]
        if s.count(s1) == n//i:
            print('True')
            break
else :
    print('False')
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-25 20:23:45 | 显示全部楼层
打卡~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-20 10:44:00 | 显示全部楼层
学习打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-9 15:54:07 | 显示全部楼层
就很好奇你们这群程序员是如何记住这么多不认识的玩意儿的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-3 09:37:17 | 显示全部楼层
打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 12:57:18 | 显示全部楼层
>>> x='我爱丝袜'
>>> x.startswith('我')
True
>>> x.startswith('我1')
False
>>> x.endswith('袜')
True
>>> x.endswith('丝袜')
True
>>> x.endswith('爱丝袜')
True
>>> x.endswith('我爱丝袜')
True
>>> x.startswith('丝',2)
True
>>> x.endswith('爱丝')
False
>>> x.endswith('爱丝',0,3)
True
>>> x='她爱丝袜'
>>> if x.startswith(('你','我','她')):
        print('总有人爱丝袜')

       
总有人爱丝袜
>>> x = "I love Python"
>>> x.istitle()
False
>>> x = "I Love Python"
>>> x.istitle()
True
>>> x.upper().isupper()
True
>>> x.lower().islower()
True
>>> x.isalpha()
False
>>> x='IlovePython'
>>> x.isalpha()
True
>>> '        \n'.isspace()
True
>>> '        '.isspace()
True
>>> '        \t'.ispace()
Traceback (most recent call last):
  File "<pyshell#25>", line 1, in <module>
    '        \t'.ispace()
AttributeError: 'str' object has no attribute 'ispace'
>>> '        \t\n'.isspace()
True
>>> '111\n'.isprintable()
False
>>> import keyword
>>> keyword.iskeyword('while')
True
>>> keyword.iskeyword('while1')
False
>>> '1ee'.isidentifier()
False
>>> 'ee1'.isidentifier()
True
>>> '贰'.isalnum()
True
>>> '②'.isalnum()
True
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 17:43:45 | 显示全部楼层
好多知识点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-3 16:41:29 | 显示全部楼层
滴滴滴~打卡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-25 23:45:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-28 15:35:44 | 显示全部楼层
学习学习(但感觉记不住需要多练习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-1 17:48:05 From FishC Mobile | 显示全部楼层
ctx111 发表于 2022-8-5 12:57
>>> x='我爱丝袜'
>>> x.startswith('我')
True

丝袜很好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 16:05:39 | 显示全部楼层
Learning...第一节评论只有一页的课.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-2 22:04:00 | 显示全部楼层
标识符:可以用作变量命名的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-22 21:08:41 | 显示全部楼层
各位觉得是看完视频再看书比较好呢,还是先看书再看视频好呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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