设为首页 收藏本站
查看: 930|回复: 0

[经验分享] 初学python之字符串常见操作

[复制链接]

尚未签到

发表于 2018-8-13 07:40:35 | 显示全部楼层 |阅读模式
  字符串常见操作
  转义,常见转义符为
  R/r
  In [31]: s ='c:\windows\nt'
  In [32]:print(s)
  c:\windows
  t
  加入转义符号
  In [33]: s =R'c:\windows\nt'
  In [34]:print(s)
  c:\windows\nt
  三引号的作用
  In [35]: sql ="""
  ...: select  * from xxx where name = 'tom'
  ...: """
  In [36]:print(sql)
  select  *from xxx where name = 'tom'
  join 字符串的拼接
  In [39]: a ='abcd'
  In [40]:'.'.join(a)
  Out[40]:'a.b.c.d'
  In [42]: ' #'.join(a)
  Out[42]: 'a # b# c # d'
  split 字符串分割转为元组
  split  以某个为分界线,进行分割成若干个字符串
  split  默认为从左向右分割
  In [46]: s1
  Out[46]:"I'm \ta super student"
  In [47]:s1.split()
  Out[47]:["I'm", 'a', 'super', 'student']
  以super关键字进行切割
  In [48]:s1.split('super')
  Out[48]:["I'm \ta ", ' student']
  以引号进行切割
  In [6]:a.split("'")
  Out[6]: ['I', 'mvery sorry']
  以某个单词进行切割,可以发现sorry这个单词背
  In [8]:a.split("sorry")
  Out[8]:["I'm very ", '']
  默认为遇空白字符进行分割
  以关键字进行切分N段
  以空格进行切割成某几个段,比如从第一个空格进行分段,那么第一个空格开始的为一段,剩余的段落为一个整段
  In [18]: a = 'OnFriendship And a youth said'
  In [19]:a.split(' ',1)
  Out[19]: ['On','Friendship And a youth said']
  以空格为准,分成两段,这样在分成第二个空格后面的整体又为一段
  In [20]:a.split(' ',2)
  Out[20]: ['On','Friendship', 'And a youth said']
  rsplit 反向切分
  一般用于取文件路径以及文件名效率比较高
  取s1字符串中,以最后一个关键字为切割符,并将其最后分为1段(取反)
  In [45]: s1
  Out[45]:'/data0/python/projects'
  In [46]:s1.rsplit('/',1)
  Out[46]:['/data0/python', 'projects']
  In [47]: s1 =r'/data0/python/projects/hello.txt'
  In [48]:s1.rsplit('/',1)
  Out[48]:['/data0/python/projects', 'hello.txt']
  maxsplit 平均最大切分x段,与默认切段一样,都是以当前关键字依次向后切分
  In [51]: a
  Out[51]: 'OnFriendship And a youth said'
  In [52]:a.split(' ',maxsplit=2)
  Out[52]: ['On','Friendship', 'And a youth said']
  aplitlines 按行切割
  In [66]: a ="""
  ...: hello
  ...: python
  ...: enenhaha
  ...: """
  In [67]: a
  Out[67]:'\nhello\npython\nenenhaha\n'
  In [68]:a.splitlines()
  Out[68]: ['','hello', 'python', 'enenhaha']
  splitlines会将回车和换行符(\n)都认为是一行
  splitlines true
  true 参数为保留特殊字符
  In [87]: a
  Out[87]: 'abc \nnde \r haha \n'
  In [88]:a.splitlines()
  Out[88]: ['abc', ' nde ', ' haha ']
  In [89]:a.splitlines(True)
  Out[89]: ['abc\n', ' nde \r', ' haha \n']
  partition 以某个关键字为分割符 *
  从左到右,将分隔字符切割成两部分
  In [99]: a
  Out[99]: 'NoPython documentation found for'
  In [100]:a.partition('ython')
  Out[100]: ('NoP', 'ython', ' documentation found for')
  n [108]:len(a.partition('P'))
  Out[108]: 3
  In [101]:a.partition('Python')
  Out[101]: ('No', 'Python', ' documentation found for')
  n [108]:len(a.partition('P'))
  Out[108]: 3
  如果发现没有则将本身为head,并且将sep 和tail 全部被抹去
  查看一个不存在的关键字:
  n [102]:a.partition('HAHAHA')
  Out[102]: ('NoPython documentation found for', '', '')
  反向partition
  rpartition
  In [112]:a.rpartition('Python')
  Out[112]: ('No', 'Python', ' documentation found for')
  与正向不同的是,它只返回一个tail结尾
  In [115]:a.partition('hahaha')
  Out[115]: ('NoPython documentation found for', '', '')
  In [116]:a.rpartition('hahaha')
  Out[116]: ('','', 'No Python documentation found for')
  这样用于筛取最后字段的话,更加方便
  In [119]:a.partition('/')
  Out[119]: ('','/', 'data0/python/projects/hello.txt')
  In [120]:a.rpartition('/')
  Out[120]:('/data0/python/projects', '/', 'hello.txt')
  In [124]:a.rpartition('/')[-1]
  Out[124]:'hello.txt'
  字符大小写
  upper()  全部转为大写
  lower()  全部转为小写
  In [139]: a.upper()
  Out[139]: 'SUPERSTUDENT'
  In [140]:a.upper().lower()
  Out[140]: 'superstudent'
  可以用于大小写判断时候用到
  In [144]: b ='super'
  In [145]: b in a
  Out[145]: True
  In [146]: b ina.upper()
  Out[146]: False
  swapcase()  互换大小写
  In [151]:a.swapcase()
  Out[151]: 'aBc'
  In [152]: a
  Out[152]: 'AbC'
  字符串排版
  首字母大写
  In [153]: s1
  Out[153]:"I'm \ta super student."
  In [154]:s1.title()
  Out[154]:"I'M \tA Super Student."
  In [155]:s1.capitalize()
  Out[155]:"I'm \ta super student."
  字符填充
  center 设置宽度
  In [156]: s1 ='abc'
  In [157]:s1.center(10)
  Out[157]:'   abc    '
  填充字符
  In [158]: s1.center(10,'*')
  Out[158]:'***abc****'
  左右填充
  zfill 、 just ,当位数不足以拟定的长度时,以字符0进行补齐
  左填充
  In [159]:s1.zfill(10)
  Out[159]:'0000000abc'
  右填充
  In [162]: s1.ljust(10,'#')
  Out[162]:'abc#######'
  字符串修改  *
  replace 替换,在字符中找到旧的字符将其替换为新的字符串,如果不指定count则全部替换
  In [164]: a ='www.baidu.com'
  In [165]:a.replace('w','p')
  Out[165]:'ppp.baidu.com'
  指定替换的次数
  In [171]:a.replace('w','p',2)
  Out[171]:'ppw.baidu.com'
  In [172]: a ='www,www,www,www'
  In [173]:a.replace('www','p',3)
  Out[173]:'p,p,p,www'
  字符都是以从左到右进行查找并替换,找到匹配的字符并且将其进行替换,如有连续的字符则当一次替换操作
  In [175]:a.replace('w','python ',3)
  Out[175]:'python python python ,www,www,www'
  操作后为返回一个新的字符串,因为字符串本身是不可变的
  strip  去掉空格  *
  在字符串两端进行查找并去除指定的字符集
  在输入的时候或者赋值的时候难免会出现一些空格或其他字符,如我们想过滤掉的话可以使用strip进行过滤
  In [176]: enter= input('>>>')
  >>> 23
  In [177]: enter
  Out[177]: ' 23'
  去掉空格
  In [179]:enter.strip()
  Out[179]: '23'
  strip主要将左右两边的多余空格进行过滤
  In [180]: a ='en hahaha qie hoho   '
  In [181]:a.strip()
  Out[181]: 'enhahaha qie hoho'
  将关键字进行过滤,先去掉再去掉
  先去掉r再去掉y,返回移除字符串头尾指定的字符生成的新字符串
  In [182]: a = 'Iam very very very sorry'
  In [186]:a.strip('r y')
  Out[186]: 'I amvery very very so'
  在其取值的时候将其打散逐步去进行裁剪
  In [218]:s.strip('r  y')
  Out[218]: 'I amvery very very so'
  In [236]:s.strip('r yve')
  Out[236]: 'I amvery very very so'
  In [237]:s.strip('r yso')
  Out[237]: 'I amvery very ve'
  In [238]:s.strip('r yso ')
  Out[238]: 'I amvery very ve'
  In [239]:s.strip('r yso')
  Out[239]: 'I amvery very ve'
  In [240]:s.strip('r yso er')
  Out[240]: 'I amvery very v'
  lstrip()  从左开始
  In [264]:s.lstrip('I ysdfsdfam')
  Out[264]: 'veryvery very sorry'
  rstrip()  从右开始
  In [270]:s.rstrip('I ysdfsdfam')
  Out[270]: 'I amvery very very sorr'
  字符串查找  *
  rfind   从左到右
  从-1开始查找
  取当前第一个字符匹配的索引
  In [294]:a.rfind('p',-1)
  Out[294]: 11
  返回值不能是负索引
  index  与find几乎一致,找到返回的索引
  In [320]:a.index('str')
  Out[320]: 7
  count 统计子串出现次数
  统计某个特殊字符出现的次数
  In [323]: a
  Out[323]: 'object to str implicitly'
  In [324]: a.count('o')
  Out[324]: 2
  统计某个范围字母出现的次数
  In [326]: a.count('o',0,5)
  Out[326]: 1
  从某个索引位置开始统计次数
  In [327]:a.count('o',5)
  Out[327]: 1
  时间复杂度
  index和count方法都是O(n) 随着列表数据增大,而效率下降
  len() 为O(1)
  字符串判断  *
  startwith 判断是否是以某个字母开头
  In [333]:s.startswith('I am')
  Out[333]: True
  In [334]: s
  Out[334]: 'I amvery very very sorry'
  判断其步长开始的开头
  In [337]: s
  Out[337]: 'I amvery very very sorry'
  In [338]:s.startswith('a',2)
  Out[338]: True
  判断长度范围内开头的字符
  n [342]:s.startswith('a',2,100)
  Out[342]: True
  endwith() 判断结尾的字符
  In [351]:s.endswith('y')
  字符串判断is \ in
  isidentifier  判断是否是字母和下划线开头,其他都是字母
  In [361]: a
  Out[361]: 'a5'
  In [362]:a.isidentifier()
  Out[362]: True
  islower   判断全部小写
  isupper   判断全部大写
  isspace   判断是否包含空格
  format  字符串格式化  
  In [363]: a ="{server} {1}:{0}".format(8888,'192.168.1.100',server="webinfo")
  In [364]:print(a)
  web info192.168.1.100:8888
  以元组下标方法
  In [367]: a ="{0[0]}.{0[1]} ".format(('mage','com'))
  In [368]:print(a)
  mage.com
  习题略

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550886-1-1.html 上篇帖子: 搭建python数据分析平台 下篇帖子: python学习笔记(七)之集合2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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