• Python编程入门-第六章 字符串 -学习笔记


    第6章 字符串

    一、字符串索引 
    1、假设有字符串s=”apple”,那么可以通过索引去访问其中的字符,Python通过方括号来标识字符串索引,索引从0开始:s[0]=”a”,s[1]=”p”,s[2]=”p”,s[3]=”l”,s[4]=”e”。 
    2、python也支持使用负数索引,比如如果要访问字符串s的最后一个字符,那么按照正索引则可以通过s[len(s)-1]访问,也可以通过s[-1]来访问最后一个字符,这就是负数索引,从字符串最后一位到第一位对应的索引数字为-1,-2…,-[len(s)]。 
    3、使用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
    myinput=input("please input a string:")
    print("你输入字符串的字符编码和为:"+str(codesum1(myinput)))

    上述代码中直接通过”for c in s”来进行索引,每次c迭代为s中的字符,表达式简洁明了,ord()函数功能是返回字符的编码数值。 
    如果使用正索引则如下,表达方面相对显得更复杂:

    #codesum1.py
    def codesum1(s):
        """Returns the sums of the
        character codes of s.
        """
        total=0
        for i in range(len(s)):
            total=total+ord(s[i])
        return total
    myinput=input("please input a string:")
    print("你输入字符串的字符编码和为:"+str(codesum1(myinput)))

    二、字符 
    1、之前提到函数ord()可以获得字符对应的编码值,如ord(“a”),为97。同样,给定字符编码,也可以获得其对应的字符,如chr(97),为“a”。 
    2、转义字符:一般常用的转义字符: 
    对应反斜杠 
    ’对应单引号 
    ”对应双引号 
    对应换行符 
    对应回车 
    对应水平制表符 
    如>>>print(“”and’ are quotes”) 
    输出为:”and’ are quotes

    print(“ must be written \”) 
    输出为: must be written 
    

    三、字符串切片 
    对于从字符串中提取子串可通过切片来操作,指定要提取子串第一个字符的索引号,以及子串最后一个字符的索引号加1。 
    如>>>food=’apple pie’

    food[0:5] 
    输出为:apple 
    food[6:9] 
    输出为:pie 
    如果省略切片起始索引,将默认为0;如果省略切片的终止索引,将默认为至最后一个字符。 
    如>>>food=’apple pie’ 
    food[:5] 
    输出为:apple 
    food[6:] 
    输出为:pie 
    food[:] 
    输出为:apple pie。 
    示例:返回一个文件名中的扩展名
    

      

    def get_ext(fname):
        i=0
        for c in fname:
            if c=='.':
                break
            i+=1
        return fname[i+1:]
    fn=input("please input a filename:")
    print("你输入文件名的后缀为:"+get_ext(fn))

    也可以利用rfind函数:

    def get_ext(fname):
         #从右边开始查找字符"."
        dot=fname.rfind(".")
        #没有找到
        if dot==-1:    
            return ""
        else:
            return fname[dot+1:]
    
    fn=input("please input a filename:")
    print("你输入文件名的后缀为:"+get_ext(fn))

    四、标准字符串函数

    1、测试函数 
    主要包括: 
    s.endswith(t):是否以t结尾 
    s.startswith(t):是否以t开头 
    s.isalnum():是否只包涵字母或数字 
    s.isalpha():是否只包含字母 
    s.islower():是否只包含小写字母 
    s.isupper():是否只包含大写字母 
    t in s:s是否包含字符串t

    2、搜索函数 
    主要包括: 
    s.find(t):如果没有找到子串t,则返回-1;否则返回t在s中的起始位置 
    s.rfind(t):与find相同,但从右重点内容往左搜索 
    s.index(t):与find相同,但如果找不到t则引发一个异常 
    s.rindex(t):与index相同,但从右往左搜索

    3、改变大小写的函数 
    s.capitalize():将s[0]改为大写 
    s.lower():将s所有字母都小写 
    s.upper():将s所有字母都大写 
    s.swapcase():将s中字母大小写互换 
    上述返回字符串

    4、设置格式的函数 
    s.center(n,ch):包含n个字符的字符串,其中s位于中央,两边用字符ch填充 
    s.ljust(n,ch):包含n个字符的字符串,其中s位于左边,右边用字符ch填充 
    s.rjust(n,ch):包含n个字符的字符串,其中s位于右边,左边用字符ch填充 
    上述返回字符串

    5、剥除函数 
    s.strip(ch):从s开头和末尾删除所有包含在字符串ch中的字符 
    s.lstrip(ch):从s开头删除所有包含在字符串ch中的字符 
    s.rstrip(ch):从s末尾删除所有包含在字符串ch中的字符 
    上述返回字符串

    6、拆分函数 
    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相同,但从右边开始搜索t 
    s.splitlines():返回一个由s中各行组成的列表

    7、替换函数 
    s.replace(old,new):将s中的每个old替换为new 
    s.expandtabs(n):将s中的每个制表符替换为n个空格 
    上述返回字符串

    8、其他函数 
    s.count(t):返回t在s中出现的次数 
    s.encode():设置s的编码 
    s.join(seq):使用s将seq中字符串连接成一个字符串 
    s.zfill(width):在s左边添加足够多的0使得字符串长度为width

    五、正则表达式 
    一些简单的正则表达式运算符 
    xy?:可描述x和xy(?表示其左边的字符是可选可不选的) 
    x|y:可描述x和y 
    x*:可描述由0或更多个x组成的字符串 
    x+:可描述至少由1个x组成的字符串

    正则表达式中可使用圆括号指出将运算符用于哪个子串。如: 
    (ha)+!:表示ha!,haha!,hahaha!… 
    ha+!:表示ha!,haa!,haaa!… 
    1、使用正则表达式匹配字符串 
    对于程序如下:

    def is_done1(s):
        return s=='done' or s=='quit'
    #使用正则表达式
    import re #导入正则表达式库
    def is_done2(s):
        return re.match('done|quit',s)!=None

    函数re.match(regex,s)表示当regex与s不匹配时返回None,否则返回一个特殊的正则表达式匹配对象。针对上例,如果s不为’done’或’quit’中之一,则re.match()返回None。

    如果要识别一个:开头为一个或多个’ha’,末尾为一个或多个‘!’,的字符串。则可以通过正则表达式匹配更容易:

    import re
    def is_funny(s):
        return re.match('(ha)+!+',s)!=None

     

  • 相关阅读:
    前端学习之路,前端开发人员如何在团队中规范git commit提交记录
    基于AntV图表库的Ant DeSign Charts图表展示的简单应用
    基于React-Amap组件库的高德地图简单应用
    高效的Coding,前端开发人员值得一看的前端开发工具
    解决git pull拉取更新代码失败,unable to resolve reference ‘refs/remotes/origin/xxx分支名’: reference broken问题
    position: sticky实现导航栏下滑吸顶效果
    javaScript保留三位有效数字
    封装属于自己的axios请求
    微博立场检测 60分Baseline
    Sequence to Sequence Learning with Neural Networks论文阅读
  • 原文地址:https://www.cnblogs.com/tsembrace/p/7117611.html
Copyright © 2020-2023  润新知