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

[经验分享] python内置对象---字符串类型

[复制链接]

尚未签到

发表于 2018-8-12 10:39:56 | 显示全部楼层 |阅读模式
  字符串是一个有序的字符的集合。
  一、字符串常量
  编写方法:
  单引号:'f"uck'
  双引号:"f'uck"
  三引号:"""fuck""",'''fuck'''
  转义字符:"f\tc\nuc\0k"
  Raw字符串:r"C:\new\test.spm"
  Byte字符串:b'fu\x01uk'
  以下是使用字符串常量表达式创建
  实例    1.单双引号是一样的
  >>> 'fuck',"fuck"
  ('fuck', 'fuck')
  >>> 'fuc"k',"fuc'k"
  ('fuc"k', "fuc'k")
  >>> 'fuc\'k',"fuc\""
  ("fuc'k", 'fuc"')
  2.用转义序列代表特殊字节,每个转义字符代表一个字节
  >>> s='a\tb\nc'
  >>> print(s)
  a       b
  c
  >>> len(s)
  5
  >>>
  >>> s='a\0b\0c'   #  \0标识null(零字符),将八进制编码转义为一个数字
  >>> s
  'a\x00b\x00c'
  >>> print(s)
  abc
  3.raw字符串抑制转义
  myfile=open('C:\new\text.txt','w')打开一个文件时,会被\n和\t替换,此处就使用字母r在引号前使用,抑制转义。
  myfile=open(r'C:\new\text.txt','w')
  4.字符串块:三重引号,编程多行文本数据非常便捷。
  >>> s="""fuck
  ... you
  ... you
  ... you
  ... you"""
  >>>
  >>> s
  'fuck\nyou\nyou\nyou\nyou'
  >>> print(s)                            #print的友好格式
  fuck
  you
  you
  you
  you
  >>>
  二、字符串应用
  1.基本操作
  >>> len('abcdef')        #计算字符串长度
  6
  >>> 'abc'+'def'            #合并字符串
  'abcdef'
  >>> 'fuck'*4                #重复打印字符串
  'fuckfuckfuckfuck'
  >>>
  >>> s='fuck'                #定义一个变量x去获取一个序列(这里是字符串)的元素,并对每一个元素执行一个或多个语句操作。
  >>> for x in s:print(x)
  ...
  f
  u
  c
  k
  >>>
  2.索引和分片
  python中字符串是有序的集合,可以通过其位置获得他们的元素,字符串中的字符是通过索引提取的。
DSC0000.jpg

  >>> s='fuck'
  >>> s[0],s[-2]            #正偏移、负偏移,偏移0就是字符串的第一个字符
  ('f', 'c')
  >>> s[1:2]                #分片,使用冒号分隔字符串,python返回一个新的对象,左边的偏移称下边界(包含下边界在内),右边的偏移称上边界(不包含上边界)。
  'u'                      #以上就是提取包含下边界偏移1,直到不包含上边界偏移2的元素
  >>>
  >>> s[:1]                #下边界默认值为0
  'f'
  >>> s[1:]                #上边界默认值为字符串长度
  'uck'
  >>> s[:-1]                #下边界默认值为0,下边界是-1(对应元素的最后一项)
  'fuc'
  >>>
  3.扩展分片
  X[I:J:K]在X对象中,从偏移为I直到偏移为J-1,每隔K元素索引一次
  >>> X='123456789'
  >>> X[0:9:3]            #提取从偏移值0到8,间隔2个元素的元素
  '147'
  >>>
  >>> Y='hello'
  >>> Y[::-1]            #可以使用负数做步进,进行反转
  'olleh'
  >>>
  4.字符串转换
  >>> int('666')+334        #将字符串转换为数字
  1000
  >>> '666'+str(334)        #将数字转换为字符串
  '666334'
  >>> '666'+repr(334)      #将对象转换为字符串
  '666334'
  >>> ord('a')                    #将单个字符转换为ASCII码
  97
  >>> chr(97)                    #将ASCII码转换为对象的字符
  'a'
  >>> q=ord('12')
  Traceback (most recent call last):
  File &quot;<stdin>&quot;, line 1, in <module>
  TypeError: ord() expected a character, but string of length 2 found            #ord()函数期望是一个字符,但是字符串有2个长度了
  >>>
  5.修改字符串
  字符串是一个有序的不可改变的特性,不可变是不可以在原处修改一个字符串。如
  >>> s=&quot;fuck&quot;
  >>> s[0]=&quot;why&quot;
  Traceback (most recent call last):
  File &quot;<stdin>&quot;, line 1, in <module>
  TypeError: 'str' object does not support item assignment
  >>>
  若想更改字符串内容,可使用合并、分片工具来建立并复制给一个新的字符串对象。
  >>> x='fuck'
  >>> x='fuck'+'u'
  >>> x
  'fucku'
  >>> x=x[:3]+'you'+x[4]
  >>> x
  'fucyouu'
  >>>
  也可以通过replace函数更改字符串内容
  >>> x=&quot;fuck&quot;
  >>> x=x.replace('ck','n')
  >>> x
  'fun'
  >>>
  6.字符串方法(函数)
  除了表达式运算符可以处理字符串外,还可以使用字符串方法,方法调用同时进行2次操作。
  a.属性读取,具有abject.attribute格式的表达式。读取abject对象的attribute属性。
  b.函数调用表达式,调用函数代码,传递零活更多用逗号隔开的参数对象,最后返回函数的返回值。
  1).字符串方法实例:修改字符串
  >>> s=&quot;fuck&quot;
  >>> s=s.replace('ck','n')
  >>> s
  'fun'
  >>> s='xxxfuckxxxfuck'
  >>> where=s.find('fuck')        #find()方法返回子字符串出现的偏移,未找到返回-1
  >>> where
  3
  >>> s=s[:where]+'ooo'+s[(where+3):]
  >>> s
  'xxxoookxxxfuck'
  >>>
  >>> s='fuck'
  >>> L=list(s)        #将字符串打散为一个序列
  >>> L
  ['f', 'u', 'c', 'k']
  >>> L[0]='g'        #更改序列内容
  >>> L[1]='g'
  >>> L
  ['g', 'g', 'c', 'k']
  >>> s=''.join(L)    #通过设定NULL分隔符,join将列表字符串链接在一起
  >>> s
  'ggck'
  >>>
  >>> '000'.join(['f','u','c','k']) #通过设定000分隔符,将列表连接在一起
  'f000u000c000k'
  >>>
  2)字符串方法实例:文本解析
  分析结构并提取字串,为了提取固定偏移的字串,可以利用分片技术:
  >>> s='aaa bbb ccc'
  >>> L1=s[:3]
  >>> L2=[8:]
  >>> L2=s[8:]                #这组数据出现在固定偏移处,因此可以通过分片从原始字符串分出来,这种技术叫 解析。
  >>> L1
  'aaa'
  >>> L2
  'ccc'
  >>>
  >>> s='aaa bbb ccc'        #此字符串是有空格分隔的
  >>> L1=s.split()                #通过split()方法将一个字符串分隔为一个子字符串列表
  >>> L1
  ['aaa', 'bbb', 'ccc']
  >>>
  >>> s='fuck,u,ha'        #字符串中有,
  >>> L1=s.split(',')            #通过指定分隔符为  ,
  >>> L1
  ['fuck', 'u', 'ha']
  >>>
  >>> s='aaafuckbbbfuckccc'        #字符串重复出现fuck
  >>> L1=s.split('fuck')                #可以指定分隔符为fuck
  >>> L1
  ['aaa', 'bbb', 'ccc']
  >>>
  3)实际应用中常见的字符串方法
  >>> s='this is a test\n'            #定义一个字符串对象
  >>> s
  'this is a test\n'
  >>> s.rstrip()                    #去除结尾的空行
  'this is a test'
  >>> s.upper()                #转换为大写
  'THIS IS A TEST\n'
  >>> s.endswith('\n')        #测试结尾字符是否为\n
  True
  >>> s.startswith('th')        #测试开始字符是否为th
  True
  >>> s.find('is') != -1            #通过find方法测试变量s中是否存在is子串
  True
  >>> 'is' in s                        #可以通过in测试变量s中是否存在is子串
  True
  >>> str='\n'
  >>> s.endswith(str)        #给endswith()方法传入一个变量str来测试变量s是否存在str的值
  True
  >>> s[-len(str):]==str    #通过len函数测试变量s是否存在str的值
  True
  >>>
  expandtabs用法
  >>> a='name\tglass\tsex\tprogram\nxiaoming\tdgxin\tman\tjishu\nlifeng\tdgxin\tnan\tjishu\nyang\tmme\tnan\tjishu\t'
  >>> v=a.expandtabs(20)    #遇到\t 不足20个字符自动补齐至20个字符
  >>> print(v)
  name                glass               sex                 program
  xiaoming          dgxin               man                jishu
  lifeng                dgxin               nan                 jishu
  yang                 mme                nan                 jishu
  >>>
  >>> a='1234'
  >>> a.isdecimal() #判断是否为数字
  True
  >>> a.isdigit()        #判断是否为数字
  True
  >>> a='二'
  >>> a.isdecimal()
  False
  >>> a.isdigit()
  False
  >>> a='②'
  >>> a.isdecimal()
  False
  >>> a.isdigit()
  True
  >>> a=&quot;1 &quot;
  >>> a.isspace()        #判断是否全部为空格
  False
  >>> a=&quot;   &quot;
  >>> a.isspace()
  True
  >>>
  >>> a=&quot;this is a test&quot;
  >>> a.title()                        #转换为标题格式,首字母都大写
  'This Is A Test'
  >>>
  >>> a='this is a test'
  >>> a
  'this is a test'
  >>> b='_'.join(a)            #指定分隔符来分隔字符串中所有字符
  >>> b
  't_h_i_s_ _i_s_ _a_ _t_e_s_t'
  >>>
  >>> a='  test  '
  >>> a.rstrip()        #去除右边空格
  '  test'
  >>> a.lstrip()        #去除左边空格
  'test  '
  >>> a.strip()         #去除两端空格
  'test'
  >>>
  >>> a=&quot;\ttest&quot;
  >>> a.strip()                #也可以去除空行和tab
  'test'
  >>> a=&quot;\ntest&quot;
  >>> print(a)
  test
  >>> b=a.strip()
  >>> print(b)
  test
  >>> a='test'
  >>> a.lstrip('t')            #去除左边的t
  'est'
  >>>
  >>> a='test'
  >>> a.lstrip('98yuit')            #会每个字符(应该是子序列)都去匹配对象test。
  'est'
  >>>
  >>> a.lstrip('98yuite')                #匹配到了子序列te
  'st'
  >>>
  >>> s=&quot;this is a test&quot;
  >>> s.partition('s')            #根据s分一次字符串。会保留s
  ('thi', 's', ' is a test')
  >>> s.split('s')                    #根据s分一次或N次字符串(默认全部分隔),会失去s
  ['thi', ' i', ' a te', 't']
  >>> s.split('s',1)
  ['thi', ' is a test']
  >>> s.split('s',2)
  ['thi', ' i', ' a test']
  >>>
  >>> a='this is a test'
  >>> a.startswith('this')        #以什么开头
  True
  >>> a.endswith('st')            #以什么结尾
  True
  >>>
  >>> a='this Is a teST'
  >>> a.swapcase()                #大写转小写,小写转大写
  'THIS iS A TEst'
  >>>

运维网声明 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-550526-1-1.html 上篇帖子: Python学习笔记__13.4章 psutil 下篇帖子: Python下的云计算(OpenStack技术书籍)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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