参考链接: Python字符串| min
一篇关于python字符串方法详解的博客,come with me~ 首先介绍一下一些序列型数据的知识:
序列型数据
字符串(str ''表示,不可变,有序)元组(tuple “,”才是关键,不可变,有序)列表(list []表示,可变,有序)字节数据(bytes b’'表示,不可变) 这里详细补充可变与不可变: 首先不管是可变还是不可变的序列类型(1)分片必定产生新的序列(2) 号在等号右边即L=L [i]必定产生新的序列,然后将新的序列地址赋予给等号左边的变量 对列表进行添加元素的方法总结 对于不可变变量来说,A =B其实就等价于A=A B,但是对于可变变量来说,A =B是直接在原值的基础上做修改。
基本操作
len()、max()、min(),获取数据的长度、序列中元素最大、最小值,sum()获取列表或元组中元素之和 tip:min max返回的是值不是位置索引(区别于R)字节数据返回ASCII编码
索引访问操作
正向递增从0开始,反向递减从-1开始 tip:如果索引下标越界则IndexError;如果索引下标不是整数则TypeError。
切片操作
s[i:j] 或 s[i:j:k] 为基本形式,i省略从0开始,j省略直到结束,k省略默认为1,切片包括i不包含j tip:下标是负数,如果截取范围内没有数据则返回空序列超过下标范围不报错。
连接/重复/成员关系操作
操作符及使用描述x y连接序列x和yn * x / x * n序列x复制n次x in s如果x是s的子串返回True,否则Falses.count(x)返回x在s中出现的次数s.index([i,j]返回x在s的i到j(不包括j)中第一次出现的下标
比较运算操作
!=不等于、==等于、<=小于等于、>=大于等于 字符串比较ASCII编码(小写字母编码大于大写字母,小鬼不能当家,往后排)
排序操作
sorted(s,key=None,reverse=False)返回排序列表,reverse默认是升序,当为True时为倒序
内置函数all()&any()
all(s):如果s的所有值都为True,返回True;否则返回False any(s):如果s的任意值为True,返回True;否则返回False
序列拆封
即赋值问题,变量个数和序列长度相等时:变量1,2,…,n = 序列或可迭代对象,使用*变量将多个值作为整体赋值给新变量 tip:不相等时ValueError;eg:first,*s,last = [1,2,3,4,5]去掉最大值和最小值
字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符,是编程语言中表示文本的数据类型,是不可变的数据类型,通常用引号来创建字符串。由0个或多个字符组成的有序字符序列,一对单引号或双引号表示字符串,一对三单引号或三双引号表示多行字符串。
字符ASCII编码十进制0-90011,0000-0011,100148-57A-Z0100,0001-0101,101065-90a-z0110,0001-0110,101097-122符号其余
比较字符ASCII编码大小
空格<数字<大写字母<小写字母
Unicode编码
统一字符编码,即覆盖几乎所有字符的编码方式 从0到1114111(0x10FFFF)空间,每个编码对应一个字符 python字符串中每个字符都是Unicode编码字符
函数及使用描述chr(u)x为Unicode编码,返回其对应字符ord(x)x为字符,返回其对应的Unicode编码
从python 3.0开始,字符串存储为Unicode,即字符串中的每个字符都由代码点表示。因此每个字符串只是一个Unicode代码点序列,用encode()函数将非编码字符串转换为python支持的任何编码。
字符串操作符
操作符及使用描述x y连接字符串x和yn * x / x * n字符串x复制n次x in s如果x是s的子串返回True,否则False
字符串类型的格式化
字符串格式化用于解决字符串和变量同时输出时的格式安排,将一个值插入到一个有字符串格式符%s的字符串中。值得注意的是双引号后面还要加一个%
print("%s is a %d years old boy." % ('Conan',7)
#Conan is a 7 years old boy.
format()方法的基本使用
<字符串{<参数序号>:<格式控制标记>)}>.format(<逗号分隔的参数>)
:填充对齐宽度,<.精度>类型引号符号用于填充的单个字符<左对齐 >右对齐 ^居中输出宽度用于整数和浮点数的千位分隔符浮点数小数部分的精度或字符串的最大输出长度整数类型b,c,d,o,x,X浮点数e,E,%
<0:填充 对齐 宽度,.精度 类型>
b:输出整数的二进制方式c:输出整数对应的Unicode字符d:输出整数的十进制方式o:输出整数的八进制方式x:输出整数的小写十六进制方式X:输出整数的大写十六进制方式e:输出浮点数对应的小写字母e的指数形式E:输出浮点数对应的大写字母E的指数形式f:输出浮点数的标准浮点形式s:输出格式化字符串p:用十六进制数格式化变量的地址%:输出浮点数的百分形式
字符串的特殊字符
转义符:表达特定字符的本意b:退格n:换行(光标移动到下行首)r:回车(光标移动到本行首)a:响铃(在行尾时):续行符:反斜杠符号":双引号':单引号e:转义 00:空v:纵向制表符t:横向制表符f:换页o**:八进制数,**表示字符x**:十六进制数,**表示字符
字符串的判断
函数描述函数描述str.isdigit()是否全是数字str.isdecimal()是否只包含十进制数字字符str.isalpha()是否全是字母str.isnumeric()是否只包含数字str.isalnum()是否全是字母或数字str.islower()是否全部为小写str.isupper()是否全是大写str.istitle()是否为标题,即各单词首字母大写,非首字母小写str.isspace()是否是空白(仅包含空格、制表符、换行符等)字符str.isidentifier()是否满足标识符定义规则(只能是字母下划线开头)str.isprintable()是否是可打印字符(制表符、换行符不是,空格是)str.isdecimal()是否由十进制字符组成
补充: isdecimal函数,当是 Unicode数字、全角数字(双字节)为真, 罗马数字和汉字数字为假,为单字节数字时报错。 而isdigit函数, 如果是Unicode数字、byte数字(单字节)、全角数字(双字节)和罗马数字是为真, 只有汉字数字 为假。 对于isnumeric函数,Unicode数字、全角数字(双字节)、罗马数字和汉字数字 都是真,可是如果是byte数字则报错。 大家注意区分哦~ 再补充一点: istitle函数,即使首字母字符前面有非字母字符,如中文、数字、下划线等,也不影响对首字母字符的判断,但是每组必须第一个字母大写,后续字母小写,后续字母大写也会报错哦~
大小写转换
str.swapcase()大小写互换 str.capitalize()转换为首字母大写,其他小写 str.casefold()转换为大小写无关字符串比较的格式字符串,也是大写变小写,不过对象是Unicode str.upper()全部大写 str.lower()全部小写,对象是ASCII
字符串的填充与对齐
str.center()字符串居中,返回一个用指定字符填充的字符串,默认是空格 str.ljust()默认空格填充在右边,返回一个空格填充的字符串,其原始字符串左对齐为总宽度 str.rjust()默认空格填充在左边,返回一个空格填充的字符串,其原始字符串右对齐为总宽度 str.zfill()前面补0 str.expandtabs()将字符串中的制表符扩展为若干个空格
字符串的修剪与扩展
str.strip([chars]) str.lstrip([chars]) str.rstrip([chars]) 分别是移除左右两边、左边(即所有前导空格)、右边(即所有尾随空格)的字符chars,默认为移除空白(空格、制表符、换行符) tip:chars可以是多字符,在移除时只要是这个序列的字符都会被移除 str.expandtabs([tabsize]):将字符串中的制表符扩展为多个空格,如果未提供参数tabsize则每个选项卡默认为8个空格
字符串的测试与查找
str.startswith(prefix,[start,end]) str.endwith(suffix,[start,end]) 判断字符串str是否以prefix开头/是否以suffix(要检查的后缀的字符串或元组)结尾,start和end是搜索边界 str.count(sub,[start,end])返回字符串str中子串sub出现的次数 str.find(beg = 0, end = len(string))如果找到起始索引beg和结束索引则确定str是出现在字符串中还是字符串的子字符串,如果找到返回索引,否则返回-1 str.rfind(beg = 0, end = len(string))与find相同,只是从字符串右边开始查找 str.index(beg = 0, end = len(string))与find相同,只是如果未找到则引发异常 str.rindex(beg = 0, end = len(string))与index相同,只是从右边开始查找
Tip: find和index的区别是前者返回位置,如果找不到返回-1;后者没有找到抛出ValueError错误
字符串的替换
s.replace(old,new,count) 将字符串的子串old替换new字符串,如果有count表示只替换前count个old子串;如果s中搜索不到子串old则不创建新字符串对象
字符串的拆分与组合
s.join(iterable) 将可迭代对象iterable中的元素使用s连接起来,iterable必须全部都是字符串类型,否则报错 s.splitines() 可以指定各种换行符,最常见的是n,r,rn如果指定keepends为true则保留所有的换行符 s.split() 后面指定数目表示分割几次,引号内内容表示按什么分割,不指定时自动分割默认按空格 s.partition(sep) 从左边第一个sep进行分割,最后返回一个包含3元素的元组,sep左边部分是元组的第一个元素,sep自身是元组的第二个元素,sep右边是元组的第三个元素。如果搜索不到sep,返回的3元组中,有两个元素是空,partition后两个元素是空,rpartition前两个是空。
补充:
字符串比较: cmp(x,y)函数,如果x<y返回值是负数,x>y返回值是正数 字符串翻转: 通过步长来反转,[::-1]即将字符串一个一个倒着遍历