zoukankan      html  css  js  c++  java
  • 06 字符串

      本章内容

        1、字符串索引

        2、字符

        3、字符串切片

        4、表尊字符串函数

        5、正则表达式

    -----------------------------------

      在Python中,字符串是除了数字外最重要的数据类型;它是一种聚合数据结构,这让我们有基础初探索引和切片--用于从字符串中提取子串的方法;本章节还有另外一个非常重要的内容--正则表达式;

    1、字符串索引

      在处理字符串的时候,我们需要处理字符串中的单个字符,例如 s = 'apple' 我需要访问 e 这个字符,则需要使用字符串索引来完成;例如下面的代码:

      其中"[]"中的数字就是索引信息;这里需要注意的是,索引信息是从 0 开始,到 n-1 结束;如果从后算起,则为负数索引

      负数索引信息,从 -1 到 -n 来记录字符串信息;

      如果超出访问,则会导致报错;

      同时,我们也可以通过for循环来访问字符串,并返回字符编码的总合;代码如下:

    # codesum.py
    def codesum1(s)
        """ Returns the sums of the
        character codes of s.
        """
    
        total = 0
        for c in s:
            total = total + ord(c)
        return total

     

    2、字符

      Python下的字符使用的是Unicode编码,字符转编码使用 ord() 函数,而编码转字符使用 chr() 函数:

      转义字符:例如换行字符、回车字符、制表符都是不可见的。   用来对字符进行转义,实现字符本身的意思;

           转义符

           换行符

           制表符

           回车

      表示换行的标准方式使用字符 :

    3、字符串切片

      字符串指定两段索引信息,就可以对字串进行切片,如下:

      如果切片从0开始,可以不用写,结束不用些,如果打印全部字符串 : 也可以这样来切片:

      切片示例如下(提取文件后缀):

    # extension.py
    def get_ext(fname):
        """ Returns the extension of file
        fname.
        """
        
        dot = fname.rfind('.')
        if dot == -1:  #fname中没有
            return ''
        else:
            return fname[dot + 1:]

       有时候,我们也需要使用负数索引信息来进行切片;

    4、标准字符串函数

      我们可以通过一些有关字符串的函数,来指定字符串的功能;

      a字符串测试函数:

        s.endwith(t)  s以字符串t结尾

        s.startswith(t)  s以字符串t打头

        s.isalnum()  s质保换字母或数值

        s.isalpha()  s只包含字母

        s.isdecimal()  s只包含表示十进制数字的字符

        s.isdigit()    s只包含数字字符

        s.isidentifier()  s是非法的标识符

        s.islower()    s只包含小写字母

        s.isnumeric()   s只包含数字

        s.isprintable()   s只包含可打印的字符

        s.isspace()    s只包含空白字符

        s.istitle()    s是一个大小写符合标题要求(title-case)的字符串

        s.isupper()    s只包含大写字母

        t in s      s包含字符串t

        这些函数都是用来进行字符串测试,他们的返回值都是布尔类型(False或者True),所以它们也叫作布尔函数或者谓词;

      b搜索函数

      在字符串中查找符合条件的字串;比如index或者find,它们之间的差别在于没有找到特定字串的时候的情形,如下图:

      index是报错,而find的返回值是 -1;

      注意:字串搜索默认是从左至右搜索,但是如果是 r 打头的函数就回从右自左搜索;

      搜索函数:

        s.find(t)  如果没有找到字串t,则返回值 -1;否则返回值t在s中其实位置;

        s.rfind(t)  与find相同,但从右往左搜索;

        s.index(t)  与find相同,但如果s中找不到t,则引发ValueError异常

        s.rindex(t)  与index相同,但从右往左搜索

      c改变大小写的函数

      Python提供了各种修改字母大小写的函数,如下:

        s.capitalize()  将s[0]改为大写,其余小写

        s.lower()    让s的所有字母都小写

        s.upper()    让s的所有字母都大写

        s.swapcase()  将小写字母改为大写,并将大写字母改为小写

        s.title()      让s的大小写符合标题的要求

      设置字符串格式的函数如下:

        s.center(n,ch)  包含n个字符的字符串,其中s位于中央,凉拌用字符ch来填充

        s.ljust(n,ch)   包含n个字符的字符串,其中s位于左边,右边用字符ch填充

        s.rjust(n,ch)   包含n个字符的字符串,其中s位于右边,左边用字符ch填充

        *s.format(vars)  它是用于设置字符串格式的微型语言;

      使用format如下:

      ‘jack’作为第一部分,‘ice cream’为第二部分,索引信息分别为 1 ,2 ;这时候就回填写在前面;

      不使用 0 , 1的索引信息,直接赋值也可以;

      d剥除函数

      它用于删除字符串开头或者结尾的多余的字符;

        s.strip(ch)  从s开头和末尾删除所有包含在字符串ch中的字符;

        s.lstrip(ch)  从s开头(左端)删除所有包含在字符串ch中的字符;

        s.rstrip(sh)  从s末尾(右端)删除所有包含字符串ch中的字符;

      

      f拆分函数

      拆分函数将字符拆分为多个字符串,常见函数如下:

        s.partition(t)  将s拆分为三个字符串(head,t和tail),其中head为t前面的子串,而tail为t后面的子串;

        s.rpartition(t)  与partition相同,但从s的右端开始搜索t;

        s.split(t)    以t为分隔符,将s划分成一个系列子串,并返回一个由这些子串组成的列表;

        s.rsplit(t)    与split相同,但从s的右端开始搜索t

        s.splitlines()    返回一个由s中的各行组成的列表

      这两个函数总是返回一个这样的值:它由三个字符串组成,形式为(head,sep,tail)。这种返回值为元组(后面介绍)

      g替换函数

        s.replace(old,new)  将s中的每个old替换为new

        s.expandtabs(n)     将s中的每个制表符扩展为空格,制表符宽度为n

      h其他函数

        s.count(t)    t在s中出现的次数

        s.enode()    设置s的编码

        s.join(seq)    使用s将seq中的字符串连接成一个字符串

        s.maketrans(old.new)  创建一个转换表,用于将old中的字符改为new中相应的字符;请注意,s可以是任何字符串,它并不影响返回的转换表;

        s.translate(table)  使用指定转换表(使用maketrans创建的)对s中的字符进行替换

        s.zfill(width)  在s左边添加足够多的0,让字符串长度为width

      函数translate和maketrans很实用。例如,下面是一种将字符串转换为“脑残体”(leet-speak)的方式:

      函数zfill用于设置数值字符串的格式:

      函数join就可以将很多字符串拼接起来:

    5、正则表达式

      正则表达式是用来简易的描述一个字符串的方式,可以高效的匹配字符常见的字符串;

      简单的正则表达式:例如 cat? 就可以表示 cat 和 cats

      另一个符号位 | 表示或者:例如 a|b|c 意思为 a 或者 b 或者 c

      * 则表示无穷个字符串:a*  表示 ‘ ’ ‘a' 'aa' 'aaa' ... 【a+ 和 a* 想同,但是不包含 ' ' 空格符;】

      如果要复制字符串,则要使用 () 就行:例如,(ha)* 表示 'hahaha'

      

      实例:

    # allover.py
    def is_done1(s):
        return s == 'done' or s == 'quit'

      改用正则表达式,改写如下:

    # allover.py
    import re #使用正则表达式,导入re库;
    def is_done2(s):
        return re.match('done|quit',s)!= None  #使用函数re.match(regex.s)

      re.match(regex.s)  regex与s不匹配的时候返回None,否则返回一个特殊的正则表达式匹配对象。因此,可以只检查返回值是否为None;

      随着程序的增大,使用正则表达式更加方便;

      再举一个例子,识别逗人的字符串:

    # funny.py
    import re
    def is_funy(s):
        retrun re.match('(ha)+!+,s)!= None

      其中 (ha)+!+ 可以表示 haha!!!  ha和!都可以是任意长度;【不能是空】

      re库其实非常庞大,其中大量的正则表达式函数可以用于执行字符串处理任务,如匹配、拆分、和替换等;还有提高常用字符的捷径。

      模块re的文档:http://docs.python.org/3/library/re.html

  • 相关阅读:
    TFS 安装遇到的问题
    批量将MP4 转换为 MP3
    sqlite like 通配符 ,匹配区分大小写(默认不区分大小写)
    AutoCAD 2007-2012 长度统计工具
    python27 ImportError: No module named site
    github push时,要求密码的问题
    sqlserver中自定义计算函数
    关于win10家庭版不能开启虚拟机的问题
    js的MD5实现
    高德各省行政区显示不同区别颜色(转)
  • 原文地址:https://www.cnblogs.com/BurnovBlog/p/11134051.html
Copyright © 2011-2022 走看看