熊宝宝要当红军 发表于 2019-8-29 21:40:42

第014讲:字符串的难点内置方法们|一些题目|里面有两个疑问,求助!!!

本帖最后由 熊宝宝要当红军 于 2019-8-29 21:39 编辑

0,难点内置方法们
encode(encoding='utf-8', errors='strict') 【以 encoding 指定的编码格式对字符串进行编码。】( 小甲鱼老师说以后讲)
split(sep=None, maxsplit=-1)【不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串(这句不太理解,求助各位路过的大佬),返回切片后的子字符串拼接的列表。】(默认下空格会被切没,按什么切可自定义)




splitlines(())【在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。】(按行切成列表)
例子:
>>> str1 = """
1111111111111111
22222222222222222
333333333333333333"""
>>> str1.splitlines()
['', '1111111111111111', '22222222222222222', '333333333333333333']
>>> str1.splitlines(keepends =True)
['\n', '1111111111111111\n', '22222222222222222\n', '333333333333333333']
>>> str1.splitlines(keepends =False)
['', '1111111111111111', '22222222222222222', '333333333333333333']




translate(table)
【根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。】
replace(old, new[, count])
【把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。】
这两个方法的区别是什么,求助各位路过的大佬



isdigit()
【如果字符串只包含数字则返回 True,否则返回 False。】(没讲区别,弹幕说阿拉伯数字?)
isnumeric()
【如果字符串中只包含数字字符,则返回 True,否则返回 False】
例子:

>>> str1 = "一二三"   #中文数字可以被识别
>>> str1.isdigit()
False
>>> str1.isnumeric()
True
>>> str1 = "one"      #英文数字不行
>>> str1.isnumeric()
False
>>> str1 = "廿"          #这个居然也能被识别,好评!
>>> str1.isnumeric()
True

islower()
【如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。】(所有字母都是小写的)
isupper()
【如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。】
举个栗子:

>>> str1 = '%%%%%'
>>> str1.islower()
False
>>> str1 = 'aaaa'
>>> str1.islower()
True
>>> str1 = 'aaaaAA'
>>> str1.islower()
False
详细字符串的内置方法们请见:https://fishc.com.cn/thread-38992-1-1.html (出处: 鱼C论坛)]字符串的方法及注释 https://fishc.com.cn/thread-38992-1-1.html (出处: 鱼C论坛)



一些点
0,python 中如何注释

#用于单行注释 ; """ """ , ''' ''' 可用来进行多行注释

就像C/C++中//用于单行注释 ; /**/用于多行注释



1. 有字符串:str1 = '<atarget="_blank">鱼C资源打包</a>',请问如何提取出子字符串:'www.fishc.com

1)用切片的方法
    >>> str2 = str1
    >>> str2
    'www.fishc.com'

#索引值为负数时
>>> len(str1)
61
>>> 61-16                #16mod61 = -45
45
>>> 61-29                #29mod61 = -32
32
>>> str2 = str1[-45:-32]
>>> str2
'www.fishc.com'

2)用字符串的内置方法
>>> str2 = str1.split('/')
>>> str2
['<a href="http:', '', 'www.fishc.com', 'dvd" target="_blank">鱼C资源打包<', 'a>']
>>> str2 = str2
>>> str2
'www.fishc.com'

#索引值为负数时
>>> len(str1.split("/"))
5
>>> str2 = str1.split('/')[-3]
>>> str2
'www.fishc.com'
知识点:字符串的内置函数——split(sep=None, maxsplit=-1)【不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串(这句不太理解,求助各位路过的大佬),返回切片后的子字符串拼接的列表。】(默认下空格会被切没,按什么切可自定义)


2,将 str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'还原为有意义的字符串:
1)繁琐方法,利用字符串的各种内置函数
str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
#通过观察,我们可以发现有效字符串是 i love fishc.com

#去掉数字
    for i in range(10):
            str1 = str1.translate(str.maketrans(str(i),' '))
    >>> str1
    'i slovvvb e bferish;$c.sfco cm'
    >>> str1 = str1.replace(' ','')
    >>> str1
    'islovvvbebferish;$c.sfcocm'
    >>> str1 = str1.replace(';
    ,'')
    >>> str1
    'islovvvbebferishc.sfcocm'

#利用 replace()方法去掉不要的字符
    >>> str1 = str1.replace("s",'',1)
    >>> str1
    'ilovvvbebferishc.sfcocm'
    >>> str1 = str1.replace('vvb','')
    >>> str1
    'ilovebferishc.sfcocm'
    >>> str1 = str1.replace('er','')
    >>> str1 = str1.replace('b','')
    >>> str1 = str1.replace('sf','')
    >>> str1
    'ilovefishc.cocm'

#去掉三个C中最后面那个
    >>> len(str1)
    15
    >>> str1 = str1[:-2]+str1
    >>> str1
    'ilovefishc.com'

#整理格式,输出
    >>> str1 = str1.partition("love")
    >>> str1
    ('i', 'love', 'fishc.com')
    >>> for i in str1:
            print(i.capitalize(),end = " ")

    I Love Fishc.com2)更灵巧的方法,利用切片
str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'
#通过更仔细的观察,我们可以发现有效字符之间是等距离的所以。。。一句代码搞定
>>> str1[::3]
'ilovefishc.com'

#让它变得好看一点
>>> str1 = str1.partition("love")
    >>> str1
    ('i', 'love', 'fishc.com')
    >>> for i in str1:
            print(i.capitalize(),end = " ")

    I Love Fishc.com


我们一起来学python吧!!!


页: [1]
查看完整版本: 第014讲:字符串的难点内置方法们|一些题目|里面有两个疑问,求助!!!