第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]