美文网首页
Python基础总结(六)(更多字符串和特殊方法)

Python基础总结(六)(更多字符串和特殊方法)

作者: TryEnough | 来源:发表于2016-11-03 18:08 被阅读101次

     Python中创建的不可变的对象(如int和str)创建出来后就不会再改变,为了性能优化,Python使用同一个对象来表示具有相同内容的字符串。例如创建两个相同的字符串变量:

    >>> s1 = "test"

    >>> s2 = "test"

    >>> id(s1)

    4337183936

    >>> id(s2)

    4337183936

    可以看到s1和s2在内存中的标示id是同一个。

    处理字符串的函数

    len函数返回一个字符串中字符的个数

    max函数返回字符串中的最大字符

    min函数返回字符串中最小字符

    字符串下标运算符:[]

    字符串是一个字符序列,可以通过下标(从0开始)访问字符串中的一个字符:

    s[index]

    注意:1、s[-1] = s[-1 + len(s)],表示字符串的最后一个字符。2、字符串是不可变的,不能通过下标去尝试修改字符串中的一个字符。

    字符串截取符:[Start: end]

    截取从start到end-1部分的字符串,start为空表示0,end为空表示最后一个下标,如果start或end是负数,那么就用len(s)+负数来替换下标。如下例子:

    >>> s = "welcome"

    >>> s[: 6]

    'welcom'

    >>> s[3:]

    'come'

    >>> s[1:-1]   #等于s[1: -1+len(s)] = s[1: 6]

    'elcom'

    字符串连接符:+、字符串复制符:*

    >>> s1="a"

    >>> s2="b"

    >>> s1+s2

    'ab'

    >>> 3*s1

    'aaa'

    字符串包含某个字符串判断:in、not in

    >>> s = "welcome"

    >>> "come" in s

    True

    >>> "come" not in s

    False

    比较字符串

    可以使用==、!=、 >、 <、 >=、 <=来比较字符串,Python是比较字符串中从脚标0开始依次向右对应位置的字符进行大小比较的。

    迭代字符串

    字符串是可迭代的,这意味着可以使用for循环来遍历字符串中的每一个字符,例如:

    for ch in s:

        print(ch)

    或遍历奇数位

    for i in range(0, len(s), 2):

        print(s[i])

    测试字符串类型常用函数:

    isalnum(): bool        #字符串中至少有一个字符,并且是字母和数字组成就返回true 

    isalpha(): bool         #字符串中至少有一个字符,并且是字母组成就返回true

    isdigit(): bool           #字符串只含有数字就返回true

    isidentifier():bool    #字符串是Python标示符就返回true

    islower(): bool         #字符串中至少有一个字符,并全是小写就返回true

    isupper(): bool        #字符串中至少有一个字符,并全是大写就返回true

    isspace(): bool        #字符串中只包含空格就返回true

    搜索字符串:

    endswith(s1: str): bool      #如果字符串以子串s1结尾则返回true

    startswith(s1: str): bool     #如果字符串以子串s1开头则返回true

    find(s1): int                         #返回s1在这个字符串的最低下标,如果不存在返回-1

    rfind(s1): int                        #返回s1在这个字符串的最高下标,如果不存在返回-1

    count(substring): int         #返回这个子串在字符串中出现的次数

    转换字符串:

    capitalize(): str  #返回大写首字母的字符串

    lower(): str  #将字母都变成小写

    upper(): str  #将字母都变成大写

    title(): str  #大写每个单词的首字母

    swapcase(): str  #将小写字母变成大写,大写字母变成小写

    replace(old, new): str  #用新的字符串替代老的字符串

    ⚠️:这里的转换都是创建了一个新的字符串,因为字符串是不可变的。原来的字符串内容没有变化。

    删除字符串两端的空格(包括‘’、\t、\f、\r、\n):

    lstrip(): str   #去掉字符串前端的空白字符串

    rstrip(): str  #去掉字符串后端的空白字符串

    strip(): str  #去掉字符串两端的空白字符串

    格式化字符串:

    center(width): str  #返回在给定宽度上居中的字符串副本

    ljust(width): str  #返回在给定宽度上居左的字符串副本

    rjust(width): str  #返回在给定宽度上居右的字符串副本

    运算符重载:

    Python中的运算符重载思想比较简单,你只需要在你需要重载的地方重写和运算符对应的方法即可。这里提供和运算符对应的方法:

    ⚠️方法前后都是双下划线

    __init__ 构造函数 对象建立:X = Class(args)

    __del__ 析构函数 X对象收回

    __add__ 运算符+ 如果没有_iadd_,X+Y,X+=Y

    __or__ 运算符|(位OR) 如果没有_ior_,X|Y,X|=Y

    __repr__,__str__ 打印、转换 print(X)、repr(X),str(X)

    __call__ 函数调用 X(*args,**kargs)

    __getattr__ 点号运算 X.undefined

    __setattr__ 属性赋值语句 X.any = value

    __delattr__ 属性删除 del X.any

    __getattribute__ 属性获取 X.any

    __getitem__ 索引运算 X[key],X[i:j],没__iter__时的for循环和其他迭代器

    __setitem__ 索引赋值语句 X[key] = value,X[i:j] = sequence

    __delitem__ 索引和分片删除 del X[key],del X[i:j]

    __len__ 长度 len(X),如果没有__bool__,真值测试

    __bool__ 布尔测试 bool(X),真测试

    __lt__,__gt__, 特定的比较 X < Y,X > Y

    __le__,__ge__, X<=Y,X >= Y

    __eq__,__ne__ X == Y,X != Y

    __radd__ 右侧加法 Other+X

    __iadd__ 实地(增强的)加法 X += Y (or else __add__)

    __iter__,__next__ 迭代环境 I = iter(X),next(I)

    __contains__ 成员关系测试 item in X (任何可迭代的)

    __index__ 整数值 hex(X),bin(X),oct(X),O[X],O[X:]

    __enter__,__exit__ 环境管理器 with obj as var:

    __get__,__set__ 描述符属性 X.attr,X.attr = value,del X.attr

    __new__ 创建 在__init__之前创建对象

    相关文章

      网友评论

          本文标题:Python基础总结(六)(更多字符串和特殊方法)

          本文链接:https://www.haomeiwen.com/subject/rmqiuttx.html