鱼C论坛

 找回密码
 立即注册
查看: 1706|回复: 0

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

[复制链接]
发表于 2019-8-29 21:40:42 | 显示全部楼层 |阅读模式

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

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

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

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




splitlines(([keepends]))【在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。】(按行切成列表)
例子:
  1. >>> str1 = """
  2. 1111111111111111
  3. 22222222222222222
  4. 333333333333333333"""
  5. >>> str1.splitlines()
  6. ['', '1111111111111111', '22222222222222222', '333333333333333333']
  7. >>> str1.splitlines(keepends =True)
  8. ['\n', '1111111111111111\n', '22222222222222222\n', '333333333333333333']
  9. >>> str1.splitlines(keepends =False)
  10. ['', '1111111111111111', '22222222222222222', '333333333333333333']
复制代码





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



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

  1. >>> str1 = "一二三"   #中文数字可以被识别
  2. >>> str1.isdigit()
  3. False
  4. >>> str1.isnumeric()
  5. True
  6. >>> str1 = "one"        #英文数字不行
  7. >>> str1.isnumeric()
  8. False
  9. >>> str1 = "廿"          #这个居然也能被识别,好评!
  10. >>> str1.isnumeric()
  11. True
复制代码


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

  1. >>> str1 = '%%%%%'
  2. >>> str1.islower()
  3. False
  4. >>> str1 = 'aaaa'
  5. >>> str1.islower()
  6. True
  7. >>> str1 = 'aaaaAA'
  8. >>> str1.islower()
  9. False
复制代码

详细字符串的内置方法们请见:[url=字符串的方法及注释 https://fishc.com.cn/thread-38992-1-1.html (出处: 鱼C论坛)]字符串的方法及注释 https://fishc.com.cn/thread-38992-1-1.html (出处: 鱼C论坛)[/url]



一些点
0,python 中如何注释

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

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



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

1)用切片的方法
  1.     >>> str2 = str1[16:29]
  2.     >>> str2
  3.     'www.fishc.com'

  4. #索引值为负数时
  5. >>> len(str1)
  6. 61
  7. >>> 61-16                #16mod61 = -45
  8. 45
  9. >>> 61-29                #29mod61 = -32
  10. 32
  11. >>> str2 = str1[-45:-32]
  12. >>> str2
  13. 'www.fishc.com'
复制代码

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

  7. #索引值为负数时
  8. >>> len(str1.split("/"))
  9. 5
  10. >>> str2 = str1.split('/')[-3]
  11. >>> str2
  12. 'www.fishc.com'
复制代码

知识点:字符串的内置函数——split(sep=None, maxsplit=-1)【不带参数默认是以空格为分隔符切片字符串如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串(这句不太理解,求助各位路过的大佬),返回切片后的子字符串拼接的列表。】(默认下空格会被切没,按什么切可自定义)


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

  3. #去掉数字
  4.     for i in range(10):
  5.             str1 = str1.translate(str.maketrans(str(i),' '))
  6.     >>> str1
  7.     'i sl  ovvvb e bferi  s  h;$c  .sfc  o cm  '
  8.     >>> str1 = str1.replace(' ','')
  9.     >>> str1
  10.     'islovvvbebferish;$c.sfcocm'
  11.     >>> str1 = str1.replace(';
  12.     ,'')
  13.     >>> str1
  14.     'islovvvbebferishc.sfcocm'

  15. #利用 replace()方法去掉不要的字符
  16.     >>> str1 = str1.replace("s",'',1)
  17.     >>> str1
  18.     'ilovvvbebferishc.sfcocm'
  19.     >>> str1 = str1.replace('vvb','')
  20.     >>> str1
  21.     'ilovebferishc.sfcocm'
  22.     >>> str1 = str1.replace('er','')
  23.     >>> str1 = str1.replace('b','')
  24.     >>> str1 = str1.replace('sf','')
  25.     >>> str1
  26.     'ilovefishc.cocm'

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

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

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

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

  11.     I Love Fishc.com
复制代码



我们一起来学python吧!!!


评分

参与人数 1贡献 +1 收起 理由
zltzlt + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 15:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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