python中一些常见的针对字符串的操作
ascii操作
- ord(char ): 参数为一个字符,return该字符对应的ascii码
- chr(int ): 参数为一个整数,return该整数在ascii码中对应的字符
索引
- 字符串分片索引都是左闭右开,即s[i,j]为[i,j),从第i个元素开始(包括第i个元素)到第j个元素结束(不包括第j个元素)
- 分片格式: [起始位置 : 结束位置 : 步长],其中,步长如果是负数,则说明其实从后往前按步长进行遍历
字符串操作
- 连接(+): s1 + s2,连接连个字符串对象s1与s2,形成一个新的字符串
- 重复(*): s * i,将字符串s重复i次并生成一个新的字符串
- 单字符比较: 比较方式是按照ascii来比较,因此‘a’要大于’A’,这是因为a的ascii码为97,而’A’的ascii码为65
- in运算符: 用来测试某字符串是否在另一字符串中
- len(s): 返回字符串s的长度
- 字符串方法: 可以通过help(str)命令来得到常用的字符串方法(如find()方法等)
常用格式描述符码
格式描述码 | 格式名称 |
%s | 字符串 |
%d: | 十进制整数 |
%f: | 浮点小数 |
%e: | 浮点指数 |
note:
- 在python中,字符串集合是不可改变的,即假设我们拥有字符串s = “hello”,这时候如果我们用下标的方式修改该字符串的某个字符是非法的,即s[0] = “k”是非法的,如果系那个把字符串s变为kello,我们只能通过s = ‘k’ + s[1 : ]来实现
- 字符串方法:
- x.__add__(y) : 等价于x+y,即实现字符串的连接
- x.__contains__(y): 等价于y in x,即判断字符串y是否在x中
- x.__eq__(y): 等价于x==y,即判断字符串x与y是否相等,该判断确定的是值是否相等而不是物理地址
- x.__ge__(y): 等价于x >= y,即判断x是否大于等于y
- x.__gt__(y): 等价于x>y,即判断x是否大于y
- x.__le__(y): 等价于x <= y, 即判断x是否小于等于y
- x.__lt__(y): 等价于x < y,即判断x是否小于y
- x.__ne__(y): 等价于x != y,即判断x是否不等于y
- x.__getitem__(n): 等价于x[n],即获得字符串x中第n个元素
- x.__getslice__(i, j):等价于x[i : j],即获得字符串中从i到j的分片
- x.__hash__(): 等价于hash(x),即获得字符串x的哈希值
- x.__len__(): 等价于len(x),即返回字符串x的长度
- x.__mod__(y): 等价于x % y
- x.__mul__(y): 等价于x * y
- x.__sizeof__(): 获取字符串x在内存中所占的内存大小
- x.capitalize(): 返回一个新字符串,该字符串的第一个字母变为大写,其余的与字符串x完全一样
- x.center(width[, fillchar]): 返回一个新的字符串,如果参数width大于x的长度,那么该字符串中间位置字符串为x,两边用可选参数fillchar来填充(默认为空格),如果小于x的长度,则返回的即为x本身
- x.count(sub[, start[, end]]): 计算字符串sub在字符串x从给start开始到end结束[start, end)的子字符串中出现的次数,其中start与end为可选参数
- x.endswith(suffix[, start[, end]]): 判断字符串x从start开始到end结束[start, end)的分片是否已suffix字符串为后缀结束
- x.find(sub [, start [, end]]): 在x字符串从start开始到end结束[start, end)的分片中查找字符串sub并返回找到的字符串对应的最小索引,例如x = “abcd”,sub = “bc”,则x.find(sub)返回的值为1,如果没找到则返回-1
- x.find(sub [, start [, end]]):从后往查找,返回最大索引
- x.index(sub [, start [, end]]): 功能类似find,只不过在找不到的时候,会报错而不是返回-1
- x.rindex(sub [, start [, end]]): 从后往前查找,返回最大索引
- x.isalpha(): 如果字符串x中所有的元素均为字符,则返回True,否则返回False
- x.isdigit():如果字符串x中所有的元素均为数字,则返回True,否则返回False
- x.islower():如果字符串x中所有字符均为小写则返回True,否则返回False
- isspace(): 如果字符串x中所有字符均为空白字符,则返回True,否则返回False
- isupper(): 如果字符串x中所有字符均为大写字符,则返回True,否则返回False
- x.join(y): 将字符串y中的每个元素用字符串x隔开,注意使用x隔开y,而不是y隔开x
- x.ljust(width [, fillchar]): 返回一个新字符串,该字符串的长度为width,如果width大于x的长度,则新字符串左边由x填充,而右边则用fillchar所指示的字符填充
- x.rjust(width [, fillchar]): 返回一个新字符串,该字符串的长度为width,如果width大于x的长度,则新字符串右边由x填充,而左边则用fillchar所指示的字符填充
- x.lower(): 返回一个新字符串,该字符串将x中的字符全部转换为小写字母
- x.lstrip([chars]):如果最左边的前缀字符串与参数相同,则删除最左边的前缀,否则不变,参数为可选,默认是空格
- x.rstrip([chars]):如果最右边的后缀字符串与参数相同,则删除最右边的后缀,否则不变,参数为可选,默认是空格
- x.strip([chars]):如果最左边的前缀字符串或者最右边的后缀字符串与参数相同,则删除最左边的前缀和最右边的后缀,否则不变,参数为可选,默认是空格
- x.partition(sep):如果在字符串x中找到了字符串sep(从左向右查找,找到第一个作为分割点),则以sep作为分割点,返回一个元组,其中有三部分,分别是(head, sep, tail),sep前面部分为head,后面部分为tail,如果没有找到,则head为x本身,其余两个均为空字符串
- x.rpartition(sep):如果在字符串x中找到了字符串sep(从右向左查找,找到第一个分割点),则以sep作为分割点,返回一个元组,其中有三部分,分别是(head, sep, tail),sep前面部分为head,后面部分为tail,如果没有找到,则head为x本身,其余两个均为空字符串
- x.replace(old, new [, count]): 用new字符串代替old字符串,如果count给出了,则只代替前count个old字符串
- x.split([sep [, maxsplit]]): 用字符串sep将字符串x进行分割,如果有参数maxsplit,则最多利用maxsplit个sep字符串进行分割,后面再遇到的sep字符串的将不再用作分割(从左向右查看)
- x.rsplit([sep [, maxsplit]]): 用字符串sep将字符串x进行分割,如果有参数maxsplit,则最多利用maxsplit个sep字符串进行分割,后面再遇到的sep字符串的将不再用作分割(从右向左查看)
- x.swapcase(): 将字符串x中的大小写字母翻转,即将所有的小写字母均换为大写,大写字母均变为小写
- x.upper():将字符串x中的所有字母均换为大写
- x.lower():将字符串x中的所有字母均换为小写
- x.zfill(width):如果字符串x的长度小于width,则在左侧均用0来填充